Angeben von Verbindungen und Anmeldeinformationen für das ReportViewer-Webserver-Steuerelement
Bei der Angabe einer Verbindung vom ReportViewer-Steuerelement zum Berichtsserver ist es hilfreich, die Bedingungen zu kennen, unter denen Verbindungen hergestellt werden.
Beim Starten, d. h. beim Laden der Webseite mit dem ReportViewer-Steuerelement, stellt das Steuerelement eine Verbindung zum Berichtsserver her, um die Berichtssitzung einzurichten, Berichtsparametereigenschaften abzurufen oder festzulegen und die Liste der auf dem Server verfügbaren Renderingerweiterungen abzurufen.
Wird das Steuerelement mit AsyncRendering=true ausgeführt, wird die HTML für den Bericht asynchron von einem IFrame-Objekt abgerufen, nachdem die Seite gerendert wurde.
Wenn der Bericht auf ein externes Bild verweist, ruft das ReportViewer-Steuerelement das Bild über separate Anforderungen mithilfe des ReportViewer-HTTP-Handlers ab. Hierbei wird für jede Anforderung eine eigene Verbindung verwendet.
Nach dem Rendern des Berichts können zusätzliche Verbindungen erforderlich werden, wenn der gerenderte Bericht in einem anderen Format exportiert werden soll.Eine Exportanforderung wird vom Browser über eine eigene Verbindung an den Berichtsserver gesendet.
Der Erfolg all dieser Vorgänge ist davon abhängig, ob das ReportViewer-Steuerelement über gültige Verbindungsinformationen zum Berichtsserver verfügt.Wie Sie Verbindungsinformationen angeben, ist von unterschiedlichen Faktoren abhängig, z. B. ob Sie Formularauthentifizierung, Windows-Authentifizierung, Anmeldeinformationen des aktuellen Benutzers oder eine ASP.NET-Sitzung verwenden.
So geben Sie Verbindungen an
Zum Herstellen einer Verbindung zum Server können Sie die Eigenschaften auf dem ServerReport-Objekt festlegen oder Schnittstellen implementieren, die die Verbindung festlegen, und diese Implementierung dann in der Datei Web.config angeben.Das ReportViewer-Steuerelement liest die Datei Web.config stets zuerst und verwendet, sofern vorhanden, die darin angegebenen Verbindungswerte.
Wenn der Sitzungsstatus aktiviert ist, können Sie wählen, ob Sie die Eigenschaften auf dem ServerReport-Objekt festlegen oder Verbindungsinformationen in der Datei Web.config angeben möchten.Wenn Sie die Verbindungsinformationen in der Datei Web.config angeben, legen Sie keine Eigenschaften auf dem ServerReport-Objekt fest.
Wenn der Sitzungsstatus deaktiviert ist, müssen Sie IReportServerConnection oder IReportServerConnection2 implementieren und die Implementierung in der Datei Web.config angeben.
Hinweis |
---|
Das Benutzerkonto, unter dem die Verbindung hergestellt wird, muss über eine gültige Rollenzuweisung auf dem Berichtsserver verfügen.Zum Erstellen eines umfassenden Satzes von Berechtigungen werden sowohl Rollenzuweisungen auf System- als auch auf Elementebene verwendet.Wenn Sie mit Rollenzuweisungen auf dem Berichtsserver nicht vertraut sind, können Sie sich mithilfe eines Lernprogramms in die Grundlagen der Rollenzuweisung einarbeiten.Weitere Informationen finden Sie auf MSDN unter Lernprogramm: Festlegen von Berechtigungen in Reporting Services. |
Festlegen von Eigenschaften auf dem ServerReport-Objekt
Sie können die Berichtsserver-URL und Timeouteigenschaften auf dem ServerReport-Objekt festlegen, indem Sie das Steuerelement zur Entwurfszeit auf ein Web Form ziehen.
In der Standardeinstellung stellt das ReportViewer-Webserver-Steuerelement eine Verbindung mit dem Berichtsserver als ASP.NET-Threadbenutzer her.
Um als anderer Benutzer eine Verbindung herzustellen (wenn z. B. alle Benutzer über ein einziges Konto eine Verbindung zum Berichtsserver herstellen sollen), implementieren Sie IReportServerCredentials auf einem serialisierbaren Objekt, und übergeben Sie eine Instanz dieses Objekts an ReportViewer.ServerReport.ReportServerCredentials.Da das ReportViewer-Steuerelement nach abgeschlossener Verarbeitung der ASP.NET-Seite keine Verbindung mehr mit dem Berichtsserver herstellen kann, muss das Objekt serialisierbar für eine Speicherung sein, wenn eine ASP.NET-Sitzung im Out-Of-Process-Modus gespeichert wird (beispielsweise in einer SQL Server-Datenbank).
Beachten Sie, dass das direkte Festlegen der ReportViewer.ServerReport.ReportServerCredentials-Eigenschaft zwei Nachteile hat:
Die ASP.NET-Sitzung muss aktiviert sein.
Die ASP.NET-Sitzung kann unnötig groß werden, da das ReportViewer-Steuerelement für jeden Benutzer, der die Seite betrachtet, eine Instanz des Objekts in Sitzung platziert.
Sie können diese Nachteile vermeiden, indem Sie eine Implementierung von IReportServerConnection2 in der Datei Web.config angeben.
Empfehlungen zum Festlegen von Anmeldeinformationen bei deaktiviertem Sitzungsstatus finden Sie in diesem Thema unter "Richtlinien für das Speichern von Anmeldeinformationen bei deaktivierter ASP.NET-Sitzung".
Angeben einer Berichtsserververbindung in Web.config
Beim Implementieren von IReportServerConnection oder IReportServerConnection2 muss die Implementierung in der Anwendungsdatei Web.config angegeben werden.Die Datei Web.config stellt den Objekttyp mit den Verbindungs- und Anmeldeinformationen bereit.
Hinweis |
---|
Sie müssen eine Implementierung von IReportServerConnection2 oder IReportServerConnection und nicht von IReportServerCredentials in der Datei Web.config angeben.IReportServerConnection2 ist von IReportServerCredentials abgeleitet und fügt zusätzliche Eigenschaften zum Angeben einer Berichtsserver-URL, eines Timeoutwerts und aller benutzerdefinierten Cookies oder HTTP-Header hinzu, die Sie verwenden möchten. |
Obwohl IReportServerConnection2 benötigt wird, wenn die ASP.NET-Sitzung deaktiviert ist, können Sie es bei aktivierter ASP.NET-Sitzung verwenden, wenn Sie eine Speicherung von Objekten in Sitzung vermeiden möchten.Weitere Informationen und ein Codebeispiel finden Sie in der Programmierreferenz für IReportServerConnection2.Weitere Informationen zum Hinzufügen von Schlüsseln in Web.config finden Sie unter Web.config-Einstellungen für ReportViewer.
In der folgenden Tabelle sind die Schnittstellen zusammengefasst, die Anmelde- und Verbindungsinformationen bereitstellen.
Schnittstelle |
Beschreibung |
---|---|
Mit dieser Schnittstelle können Sie die Anmeldeinformationen angeben, die vom ServerReport-Objekt für eine Verbindung zum Berichtsserver verwendet werden, wenn Sie nicht als aktueller Benutzer verbunden werden möchten. In der Standardeinstellung stellt das ReportViewer-Steuerelement als ASP.NET-Threadbenutzer eine Verbindung zum Berichtsserver her. Sie können einen anderen Benutzer angeben, indem Sie ReportViewer.ServerReport.ReportServerCredentials auf eine Instanz Ihrer eigenen Implementierung von IReportServerCredentials festlegen. |
|
Diese Schnittstelle erbt von IReportServerCredentials und stellt zusätzliche Member bereit, mit denen die Berichtsserver-URL und Timeouteigenschaften angegeben werden können. |
|
Diese Schnittstelle erbt von IReportServerConnection und stellt zusätzliche Member bereit, mit denen benutzerdefinierte Cookies oder Kopfzeilen angegeben werden können. Dies ist hilfreich, wenn Sie für den Berichtsserver ein Produkt für Einmaliges Anmelden verwenden. |
Richtlinien für das Speichern von Anmeldeinformationen bei deaktivierter ASP.NET-Sitzung
Wenn Sie IReportServerConnection2 implementieren, speichern Sie keine Benutzeranmeldeinformationen in der Klasse.Wenn Sie Anmeldeinformationen in einem serialisierbaren Objekt speichern, werden Benutzername und Kennwort in die ASP.NET-Sitzung serialisiert und in einer SQL Server-Datenbank oder einem anderen Zustandsserver gespeichert.Eine Serialisierung der Anmeldeinformationen ist zwar nicht zwangsläufig ein Sicherheitsrisiko, erhöht allerdings die Zahl möglicher Angriffspunkte, da Anmeldeinformationen als Sitzungsdaten gespeichert werden.
Die folgenden Ansätze sind Beispiele dafür, wie ein Speichern von Anmeldeinformationen zusammen mit anderen Sitzungsdaten vermieden werden kann:
Lesen Sie die Anmeldeinformationen aus einer Konfigurationsdatei oder einem anderem Konfigurationsspeicher.Weitere Informationen und ein Codebeispiel finden Sie in der Programmierreferenz für IReportServerCredentials.
Lesen Sie ein HTTP-Cookie aus der ASP.NET-Anforderung, um auf dem Client basierende Anmeldeinformationen bereitzustellen.
Hinweis |
---|
Sie haben zwar einen Spielraum bei der Speicherung von Anmeldeinformationen außerhalb der Klasse, müssen dabei aber sicherstellen, dass bei nachfolgenden Anforderungen stets die gleichen Anmeldeinformationen in ein und derselben Berichtssitzung zurückgegeben werden. |
Siehe auch
Verweis
Konzepte
Web.config-Einstellungen für ReportViewer
Konfigurieren von ReportViewer für asynchrones Rendering
Aspekte der Bereitstellung von Serverberichten
Konfigurieren von ReportViewer für die Remoteverarbeitung
Hinzufügen und Konfigurieren der ReportViewer-Steuerelemente