Интеграция служб 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);
}
}