Verwenden der SOAP-API in einer Webanwendung
Über die Reporting Services-SOAP-API können Sie auf alle Funktionen des Berichtsservers zugreifen. Da es sich um einen Webdienst handelt, kann problemlos auf die SOAP-API zugegriffen werden, um Funktionen zur Unternehmensberichterstellung für Ihre benutzerdefinierten Geschäftsanwendungen bereitzustellen. Wenn Sie über eine Webanwendung auf den Report Server-Webdienst zugreifen, gehen Sie ganz ähnlich vor, als würden Sie über eine Microsoft Windows-Anwendung auf die SOAP-API zugreifen. Mit Microsoft .NET Framework können Sie eine Proxyklasse generieren, die die Eigenschaften und Methoden des Report Server-Webdiensts verfügbar macht und es Ihnen ermöglicht, für die Erstellung von Geschäftsanwendungen auf Basis von Reporting Services-Technologie eine vertraute Infrastruktur und vertraute Tools zu verwenden.
Von einer Webanwendung aus kann auf die Reporting Services-Funktionen für die Berichterstellung ebenso leicht wie von einer Windows-Anwendung aus zugegriffen werden. Wenn Sie mit einer Webanwendung arbeiten, können Sie unter anderem Elemente zur Berichtsserver-Datenbank hinzufügen oder daraus entfernen, Einstellungen für die Elementsicherheit festlegen, Elemente in der Berichtsserver-Datenbank ändern und die Zeitplanung und Übermittlung verwalten.
Aktivieren des Identitätswechsels
Der erste Schritt beim Konfigurieren der Webanwendung besteht darin, den Identitätswechsel vom Webdienstclient aus zu aktivieren. Wenn der Identitätswechsel aktiviert ist, können ASP.NET-Anwendungen Aufgaben mit der Identität des Clients ausführen, für den sie arbeiten. ASP.NET erfordert Microsoft Internetinformationsdienste (IIS) für die Benutzerauthentifizierung und um ein authentifiziertes Token an die ASP.NET-Anwendung zu übergeben (bzw. ein nicht authentifiziertes Token zu übergeben, wenn eine Authentifizierung des Benutzers nicht möglich ist). In jedem dieser Fälle nimmt die ASP.NET-Anwendung die Identität des jeweils empfangenen Tokens an, wenn der Identitätswechsel aktiviert ist. Sie können den Identitätswechsel auf dem Client aktivieren, indem Sie die Datei Web.config der Clientanwendung folgendermaßen ändern:
<!-- Web.config file. -->
<identity impersonate="true"/>
Hinweis |
---|
Der Identitätswechsel ist standardmäßig deaktiviert. |
Weitere Informationen zum ASP.NET-Identitätswechsel finden Sie in der Microsoft .NET Framework SDK-Dokumentation.
Verwalten des Berichtsservers mit der SOAP-API
Sie können die Webanwendung auch verwenden, um einen Berichtsserver und seinen Inhalt zu verwalten. Der mit Reporting Services gelieferte Berichts-Manager ist ein Beispiel für eine Webanwendung, die komplett mit ASP.NET und der Reporting Services-SOAP-API erstellt wurde. Sie können den benutzerdefinierten Webanwendungen die Berichtsverwaltungsfunktionalität des Berichts-Managers hinzufügen. Sie können beispielsweise eine Liste der verfügbaren Berichte in der Berichtsserver-Datenbank zurückgeben und diese Berichte in einem ASP.NET-Listbox-Steuerelement anzeigen, in dem die Benutzer eine Auswahl treffen können. Der folgende Code stellt eine Verbindung zur Berichtsserver-Datenbank her und gibt eine Liste der Elemente in der Berichtsserver-Datenbank zurück. Die verfügbaren Berichte werden dann zu einem ListBox-Steuerelement hinzugefügt, das für jeden Bericht eine Pfadangabe anzeigt.
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);
}
}