Поделиться через


Интеграция служб Reporting Services с помощью SOAP — веб-приложение

С помощью API SOAP служб Reporting Services можно получить доступ ко всем функциональным возможностям сервера отчетов. Поскольку API SOAP является веб-службой, к нему легко получить доступ, чтобы предоставить для пользовательских бизнес-приложений функции создания отчетов в масштабе предприятия. Вы обращаетесь к веб-службе сервера отчетов из веб-приложения точно так же, как и к API SOAP из приложения Microsoft Windows. С помощью Microsoft платформа .NET Framework можно создать прокси-класс, предоставляющий свойства и методы веб-службы сервера отчетов. Затем можно использовать знакомую инфраструктуру и средства для создания бизнес-приложений на технологиях Reporting Services.

Функции управления отчетами служб Reporting Services легко доступны из веб-приложения или из приложения Windows. Из веб-приложения можно добавлять элементы в базу данных сервера отчетов и удалять из нее элементы, задавать параметры безопасности элемента, изменять элементы базы данных сервера отчетов, управлять планированием и доставкой, а также выполнять другие действия.

Включение олицетворения

Первым шагом в настройке веб-приложения является включение олицетворения со стороны клиента веб-службы. При олицетворении ASP.NET приложения могут выполняться с удостоверением клиента, от имени которого они работают. ASP.NET использует Microsoft IIS (IIS) для проверки подлинности пользователя и передачи маркера, прошедшего проверку подлинности, в приложение ASP.NET или, если не удается пройти проверку подлинности пользователя, передайте маркер без проверки подлинности. В любом случае приложение ASP.NET олицетворяет любой маркер, если олицетворение включено. Можно включить олицетворение на клиенте, изменив файл Web.config клиентского приложения следующим образом:

<!-- Web.config file. -->  
<identity impersonate="true"/>  

Примечание.

По умолчанию олицетворение отключено.

Дополнительные сведения о олицетворении ASP.NET см. в документации по пакету SDK платформа .NET Framework Майкрософт.

Управление сервером отчетов с помощью API SOAP

С помощью веб-приложения также можно управлять сервером отчетов и его содержимым. Диспетчер отчетов, который входит в состав служб Reporting Services, является примером веб-приложения, созданного с помощью ASP.NET и API SOAP служб Reporting Services. Можно добавить функции управления отчетами, доступные в диспетчере отчетов, в пользовательские веб-приложения. Например, может потребоваться вернуть список доступных отчетов в базе данных сервера отчетов и отобразить их в элементе управления listbox ASP.NET для пользователей. В следующем коде устанавливается соединение с базой данных сервера отчетов и возвращается список элементов в базе данных сервера отчетов. Затем доступные отчеты добавляются в элемент управления Listbox, в котором отображается путь к каждому отчету.

С помощью веб-приложения также можно управлять сервером отчетов и его содержимым. Веб-портал, включенный в службы Reporting Services, является примером веб-приложения, которое управляет большинством задач, которые обычно выполняются с помощью служб Reporting Services. Вы можете добавлять в свои веб-приложения функции управления отчетами с веб-портала. Например, может потребоваться вернуть список доступных отчетов в базе данных сервера отчетов и отобразить их в элементе управления listbox ASP.NET для пользователей. В следующем коде устанавливается соединение с базой данных сервера отчетов и возвращается список элементов в базе данных сервера отчетов. Затем доступные отчеты добавляются в элемент управления Listbox, в котором отображается путь к каждому отчету.

Private Sub Page_Load(sender As Object, e As System.EventArgs)  
   ' Create a Web service proxy object and set credentials  
   Dim rs As New ReportingService2005()  
   rs.Credentials = System.Net.CredentialCache.DefaultCredentials  
  
   ' Return a list of catalog items in the report server database  
   Dim items As CatalogItem() = rs.ListChildren("/", True)  
  
   ' For each report, display the path of the report in a Listbox  
   Dim ci As CatalogItem  
   For Each ci In  items  
      If ci.Type = ItemTypeEnum.Report Then  
         catalogListBox.Items.Add(ci.Path)  
      End If  
   Next ci  
End Sub ' Page_Load   
private void Page_Load(object sender, System.EventArgs e)  
{  
   // Create a Web service proxy object and set credentials  
   ReportingService2005 rs = new ReportingService2005();  
   rs.Credentials = System.Net.CredentialCache.DefaultCredentials;  
  
   // Return a list of catalog items in the report server database  
   CatalogItem[] items = rs.ListChildren("/", true);  
  
   // For each report, display the path of the report in a Listbox  
   foreach(CatalogItem ci in items)  
   {  
      if (ci.Type == ItemTypeEnum.Report)  
         catalogListBox.Items.Add(ci.Path);  
   }  
}