Экспорт (0) Печать
Развернуть все

Разработка с использованием служб SQL Reporting (Windows Azure SQL Reporting)

Обновлено: Май 2014 г.

ImportantВажно!

В этой статье приведены сведения по началу работы для разработчиков приложений, которым требуется интегрировать в свои приложения отчеты, размещенные в , а также разрабатывать средства управления для серверов отчетов .

Аналогично отчетам, развертываемым на локальных серверах отчетов (SSRS), отчеты, развертываемые на серверах отчетов , могут отображаться в приложениях Windows Forms или ASP.NET с помощью элемента управления Visual Studio ReportViewer. Аналогичным образом предоставляет доступ к конечным точкам SOAP, которые обеспечивают возможности программного управления сервером отчетов.

Ознакомьтесь с приведенными ниже разделами по требованиям, рекомендациям, совместимости и неподдерживаемым функциям.

В начало

В используется проверка подлинности с использованием куки-файлов. Все куки-файлы имеют срок действия в один час. Каждые полчаса сервер отчетов отправляет клиенту новый куки-файл. Когда приложения обращаются к серверу отчетов , в коде клиента должно быть выполнено явное сохранение новых куки-файлов, отправляемых сервером, и возврат их с последующими запросами.

Поскольку в реализован нестандартный модуль проверки подлинности с интерфейсом с помощью форм, эту особенность необходимо учитывать при программировании взаимодействия с сервером отчетов. Работа этого нестандартного модуля описана в общих сведениях о модулях безопасности (службы SQL Server 2008 R2 Reporting Services). Вкратце нужно сделать следующее:

  1. Передать учетные данные в виде, поддерживаемом модулем проверки подлинности с помощью форм.

  2. Сохранить куки-файл проверки подлинности, полученный при попытке проверки подлинности на сервере отчетов.

Образцы отчетов, разработанные в среде и использующие базы данных , можно найти в разделе Образцы для SQL Reporting.

В начало

Элементы управления ReportViewer управляют куки-файлами проверки подлинности, что упрощает задачу пользователя. Для отображения в ReportViewer отчетов, развернутых на сервере отчетов , необходимо передать URL-адрес сервера отчетов и путь к отчету, как и для любого другого отчета на сервере, а затем реализовать интерфейс IReportServerCredentials и работать с ним в ServerReport.ReportServerCredentials.

В приведенном ниже примере показана реализация и использование интерфейса IReportServerCredentials для доступа к отчетам .


/// <summary>
/// Implementation of IReportServerCredentials to supply forms credentials to SQL Reporting using GetFormsCredentials() 
/// </summary>
public class ReportServerCredentials : IReportServerCredentials
{
    public ReportServerCredentials()
    {
    }

    public WindowsIdentity ImpersonationUser
    {
        get
        {
            return null;
        }
    }

    public ICredentials NetworkCredentials
    {
        get
        {
            return null;
        }
    }

    public bool GetFormsCredentials(out Cookie authCookie, out string user, out string password, out string authority)
    {
        authCookie = null;
        user = ConfigurationManager.AppSettings["USERNAME"];
        password = ConfigurationManager.AppSettings["PASSWORD"];
        authority = ConfigurationManager.AppSettings["SERVER_NAME"];
        return true;
    }
}

Затем в файле конфигурации Web.config или App.config укажите параметры приложения в разделе <appSettings>. В приведенном ниже примере рассмотрите возможность замены значения для SERVER_NAME, USERNAME, PASSWORD и REPORT_PATH подходящими значениями для своего сервера отчетов .

<appSettings>
  <add key="SERVER_NAME" value="<INSTANCE_NAME>.report.int.mscds.com" />
  <add key="USERNAME" value="<USERNAME>"/>
  <add key="PASSWORD" value="<PASSWORD>"/>
  <add key="REPORT_PATH" value="<REPORT_PATH>"/>
</appSettings>

В приведенном ниже примере показано, как использовать интерфейс IReportServerCredentials для доступа к отчетам :

public partial class Default : System.Web.UI.Page
{
    Microsoft.Reporting.WebForms.ReportViewer ReportViewer1 = new ReportViewer();
    protected void Page_Init(object sender, EventArgs e)
    {
         ReportViewer1.ServerReport.ReportServerUrl = new Uri(String.Format("https://{0}/reportserver", ConfigurationManager.AppSettings["SERVER_NAME"]));
         ReportViewer1.ServerReport.ReportPath = ConfigurationManager.AppSettings["REPORT_PATH"];
         ReportViewer1.ServerReport.ReportServerCredentials = new ReportServerCredentials();
    }
}

Дополнительные сведения по интерфейсу IReportServerCredentials см. в разделе справки по соответствующему API-интерфейсу в Справочнике по программированию элементов управления ReportViewer в библиотеке MSDN. Для приложений Windows Forms следует использовать Пространство имен Microsoft.Reporting.Winforms. Для приложений ASP.NET следует использовать Пространство имен Microsoft.Reporting.Webforms.

Дополнительные сведения о защите конфиденциальных данных, например URL-адреса сервера отчетов, имени пользователя и пароля, см. в разделе Вопросы безопасности.

В начало

SOAP API предусматривает несколько конечных точек веб-служб для разработки настраиваемых решений по формированию отчетов. Доступ к этим функциональным средствам управления предоставляется с помощью конечных точек пространства имен ReportService2005 и пространства имен ReportService2010. Список вызовов SOAP API, неподдерживаемых в SQL Reporting, см. в разделе Рекомендации и ограничения Windows Azure SQL Reporting.

Доступ к конечной точке управления SOAP необходимо производить с помощью метода конечных точек LogonUser() для проверки подлинности в конечной точке. Затем необходимо сохранить куки-файл проверки подлинности, возвращенный в ответе HTTP, и включить его в каждый последующий запрос операции. Самый простой способ сделать это — создать новый экземпляр CookieContainer и назначить его свойству класса-посредника CookieContainer до вызова метода LogonUser().

  1. В браузере перейдите по пути к нужной конечной точке. Например: https://<INSTANCE_NAME>.report.int.mscds.com/ReportServer/reportservice2010.asmx

  2. Введите имя пользователя и пароль, затем щелкните Войти. В браузере откроется файл WSDL.

  3. Загрузите файл WSDL.

  4. Откройте командную строку Visual Studio и запустите команду wsdl.exe, чтобы создать класс-посредник. Например: wsdl /language:CS /n:"ReportServices2010" <WSDL_FILE_PATH>

  5. В Visual Studio добавьте созданный файл CS в проект.

  1. Приведенный ниже код иллюстрирует проверку подлинности и авторизацию в конечной точке управления ReportingServices2010, а также выполнение операции ReportingService2010.ListChildren(). Обратите внимание, что свойство CookieContainer задается для нового экземпляра класса CookieContainer до выполнения метода LogonUser(). Это гарантирует сохранение куки-файла проверки подлинности, возвращенного в веб-ответе LogonUser(), а также его использование при последующих вызовах веб-службы.

    ReportingService2010 rs = new ReportingService2010();
    rs.Url = String.Format("https://{0}:443/ReportServer/ReportService2010.asmx", ConfigurationManager.AppSettings["SERVER_NAME"]);
    rs.CookieContainer = new CookieContainer();
    rs.LogonUser(ConfigurationManager.AppSettings["USERNAME"], ConfigurationManager.AppSettings["PASSWORD"], ConfigurationManager.AppSettings["SERVER_NAME"]);
    
    CatalogItem[] items = rs.ListChildren("/", true);
    
  2. Затем в файле конфигурации Web.config или App.config укажите параметры приложения в разделе <appSettings>. В приведенном ниже примере замените SERVER_NAME, USERNAME и PASSWORD подходящими значениями для своего сервера отчетов .

    <appSettings>
      <add key="SERVER_NAME" value="<INSTANCE_NAME>.report.int.mscds.com" />
      <add key="USERNAME" value="<USERNAME>"/>
      <add key="PASSWORD" value="<PASSWORD>"/>
    </appSettings>
    

Дополнительные сведения о защите конфиденциальных данных, например URL-адреса сервера отчетов, имени пользователя и пароля, см. в разделе Вопросы безопасности.

В начало

Такие строки, как URL-адрес сервера отчетов, имя пользователя и пароль, являются защищаемыми сведениями и должны храниться в разделе <appSettings> файла Web.config или App.config в приложении. Рекомендуется шифровать эти данные в файле конфигурации. Приведенные ниже ссылки являются четырехчастными рядами, показывающими, как шифровать данные в разделе <connectionStrings>. Это же относится к разделу <appSettings>.

В начало

См. также

Показ:
© 2014 Microsoft