Web.config-Einstellungen für ReportViewer
Wenn Sie das ReportViewer-Webserversteuerelement verwenden, können Sie ASP.NET-Anwendungseinstellungen in Web.config festlegen, um ReportViewer zur Laufzeit zu konfigurieren.In diesem Thema werden die Web.config-Anwendungseinstellungen für das Herstellen einer Verbindung mit einem Remoteberichtsserver, zum Speichern temporärer Datenströme und zum Bereitstellen benutzerdefinierter Zeichenfolgen für die Steuerelementbenutzeroberfläche beschrieben.Außerdem werden Empfehlungen für die Verwendung der <sessionState>-Einstellung und der <machineKey>-Einstellung für ReportViewer-Anwendungen gegeben, die in Webfarmbereitstellungen ausgeführt werden. Es wird ebenfalls erläutert, wie mithilfe des <httpHandlers>-Abschnitts der Datei Web.config die Einstellungen für den HTTP-Handler des ReportViewer-Webserversteuerelements definiert werden.
Konfigurieren von <appSettings>-Elementen für ReportViewer-Steuerelemente
Um benutzerdefinierte Anwendungseinstellungen für das ReportViewer-Webserversteuerelement zu konfigurieren, können Sie im <appSettings>-Abschnitt der Datei Web.config der Anwendung folgende Schlüssel hinzufügen.Der Wert dieser Schlüssel stellt einen vollqualifizierten Klassennamen dar, der eine bestimmte Schnittstelle implementiert.
Schlüssel |
Verwendung |
ReportViewerServerConnection |
Dieser Schlüssel gibt eine Klasse an, die die IReportServerConnection-Schnittstelle implementiert.Diese Schnittstelle stellt Informationen zu Berichtsserververbindungen bereit, wenn der Sitzungsstatus deaktiviert wurde oder in der ASP.NET-Sitzung keine Verbindungsinformationen gespeichert werden sollen. Sie können auch eine Klasse angeben, die die IReportServerConnection2-Schnittstelle implementiert. Damit können Sie Cookies und benutzerdefinierte Header angeben. |
ReportViewerTemporaryStorage |
Dieser Schlüssel gibt eine Klasse an, die die ITemporaryStorage-Schnittstelle implementiert.Mithilfe dieser Schnittstelle werden von einem Berichtsserver gesendete temporäre Datenströme gespeichert, statt diese im Speicher zu belassen. Dadurch wird die Skalierbarkeit der Anwendung verbessert. |
ReportViewerMessages |
Dieser Schlüssel gibt eine Klasse an, die die IReportViewerMessages-Schnittstelle implementiert.Mithilfe dieser Schnittstelle werden benutzerdefinierte Benutzeroberflächenmeldungen bereitgestellt. In Visual Studio 2010 und höher wurde dem ReportViewer-Steuerelement die neue [T:Microsoft.Reporting.WebForms.]IReportViewerMessages3-Schnittstelle hinzugefügt.Um alle Benutzeroberflächenmeldungen zu verwenden, die vom ReportViewer-Steuerelement bereitgestellt werden, geben Sie eine Klasse an, die die IReportViewerMessages3-Schnittstelle hier implementiert. |
Angeben der vollqualifizierten Klasse
Der Wert für jeden Schlüssel besteht aus einer Klasse, die die Schnittstelle implementiert, und dem Speicherort der Assembly, die diese enthält.In ASP.NET gibt es mehrere Möglichkeiten, die Klasse mithilfe folgender Syntax anzugeben:
<add key="MyKeyName" value="MyNamespace.MyClass, Location" />
Wenn die Klasse in einer Assembly implementiert ist, kann der Speicherort entweder der Bin-Ordner der Anwendung oder der globale Assemblycache (GAC) sein.In diesem Fall muss der Schlüsselwert als vollqualifizierter Assemblyname angegeben werden, der Werte für Version, Kultur und öffentliches Schlüsseltoken enthält.Wenn andernfalls die Klasse in einer Quellcodedatei im Ordner APP_CODE der Anwendung implementiert ist, sollte dieser Ordner als Speicherort angegeben werden.
Bei den folgenden Beispielen handelt es sich um gültige Möglichkeiten, eine vollqualifizierte Klasse im GAC, im Bin-Ordner der Anwendung oder im Ordner APP_CODE anzugeben:
<add key="ReportViewerServerConnection" value="MyNamespace.MyClass, MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken= 00000000000000000 "/>
– ODER –
<add key="ReportViewerServerConnection" value="MyNamespace.MyClass, MyAssembly"/>
– ODER –
<add key="ReportViewerServerConnection" value=" MyNamespace.MyClass, APP_CODE"/>
ReportViewerServerConnection
Wenn Sie die IReportServerConnection-Schnittstelle oder die IReportServerConnection2-Schnittstelle implementieren, um Verbindungsinformationen des Berichtsservers bereitzustellen, müssen Sie den ReportViewerServerConnection-Schlüssel in der Datei Web.config definieren.Der Schlüssel gibt die benutzerdefinierte Klasse an, die IReportServerConnection und den Speicherort der Assembly oder der Quelldatei implementiert, die diesen enthält.
Wenn die Klasse im ReportViewerServerConnection-Schlüssel bereitgestellt wird, müssen Sie sicherstellen, dass Sie für das ServerReport-Objekt keine Eigenschaften festlegen, die im Widerspruch dazu stehen.Legen Sie insbesondere nicht die Eigenschaft ServerReport.Timeout, ServerReport.ReportServerUrl, ServerReport.ReportServerCredentials, ServerReport.Cookies oder ServerReport.Headers fest.
Im folgenden Beispiel wird die Syntax für den ReportViewerServerConnection-Schlüssel veranschaulicht.Darin wird die Klasse angegeben, die IReportServerConnection2 in einer Assembly mit dem Namen MyAssembly implementiert, die sich im Bin-Ordner der Anwendung befindet:
<appSettings>
<add key="ReportViewerServerConnection" value="MyNamespace.MyRVServerConnectionClass, MyAssembly"/>
</appSettings>
Ein Codebeispiel für eine Klasse, die IReportServerConnection implementiert, finden Sie unter Angeben von Verbindungen und Anmeldeinformationen für das ReportViewer-Webserver-Steuerelement.
ReportViewerTemporaryStorage
Sie müssen den ReportViewerTemporaryStorage-Schlüssel festlegen, um ein Objekt anzugeben, das die ITemporaryStorage-Schnittstelle implementiert.Implementieren Sie diese Schnittstelle, wenn Sie die vom Berichtsserver gesendeten temporären Datenströme speichern möchten, statt sie im Arbeitsspeicher zu belassen.Da jede Anforderung abgeschlossen werden muss, bevor eine neue Anforderung gestartet werden kann, wird jeweils nur die aktuelle Seite gespeichert.Diese Einstellung wird nur für Serverberichte verwendet.Im folgenden Beispiel wird die Syntax für den ReportViewerTemporaryStorage-Schlüssel veranschaulicht:
<appSettings>
<add key="ReportViewerTemporaryStorage" value="MyNamespace.MyTemporaryStorageClass, MyAssembly" />
</appSettings>
ReportViewerMessages
Sie müssen den ReportViewerMessages-Schlüssel festlegen, um ein Objekt anzugeben, das IReportViewerMessages implementiert. Dies ist eine Schnittstelle, die benutzerdefinierte Zeichenfolgen für das ReportViewer-Steuerelement bereitstellt.Mit dieser Schnittstelle können Sie die Zeichenfolgenlokalisierung für andere als die standardmäßig bereitgestellten Sprachen unterstützen.Im folgenden Beispiel wird die Syntax für den ReportViewerMessages-Schlüssel veranschaulicht.
<appSettings>
<add key="ReportViewerMessages" value="MyNamespace.MyRVMessageClass, MyAssembly" />
</appSettings>
Konfigurieren von <system.web>-Elementen für ReportViewer-Steuerelemente
In der Datei Web.config der Anwendung können Sie Einstellungen im <system.web>-Abschnitt definieren, um das Berichtssitzungsverhalten zur Laufzeit festzulegen.Das ReportViewer-Steuerelement verwendet diesen Abschnitt auch, um Einstellungen eines vom Steuerelement zur Verfügung gestellten HTTP-Handlers zu registrieren.Die folgenden Elemente werden verwendet: <sessionState>, <machineKey> und <httpHandler>.
<sessionState>
Sie können mit dem sessionState-Element ermitteln, ob der Sitzungsstatus während der Verarbeitung gespeichert wird, deaktiviert wird oder vom ASP.NET-Statusdienst außerhalb des Prozesses behandelt wird.
InProc ist die Standardeinstellung, die Sie verwenden können, wenn Ihre Anwendung auf einem Computer ausgeführt wird.Verwenden Sie diese Einstellung nicht, wenn die Berichte in einer Anwendung innerhalb einer Webfarm ausgeführt werden.
Off darf nicht verwendet werden, wenn vom ReportViewer-Steuerelement eine Client-Berichtsdefinitionsdatei (RDLC-Datei) im lokalen Modus verarbeitet wird.Der lokale Modus erfordert einen Sitzungsstatus.Wenn Sie den Remotemodus verwenden, können Sie den Sitzungsstatus deaktivieren.Wenn Sie den Sitzungsstatus deaktivieren, müssen Sie ReportViewerServerConnection im <appSetting>-Element angeben.
Sie können auch die anderen <sessionState>-Modi verwenden: Custom, SQLServer und StateServer.
<machineKey>
Wenn ein ReportViewer-Steuerelement in einer Webfarm oder einem Cluster bereitgestellt wird, muss das <machineKey>-Element angegeben werden, um für alle Knoten in der Farm die Verwendung derselben Prozessidentität zu erzwingen. Dadurch wird gewährleistet, dass ein von einem Computer gespeicherter Anzeigestatus von einem anderen Computer gelesen werden kann.
Hinweis |
---|
Die Festlegung des <machineKey>-Elements zur Synchronisierung des Anzeigestatus in einer Webfarm ist eine empfohlene Vorgehensweise in der Microsoft .NET Framework-Dokumentation (2.0 oder höher).Weitere Informationen zum Konfigurieren der Anzeigestatusvalidierung für ein Netzwerk von Internetdiensten finden Sie unter machineKey-Element (ASP.NET-Einstellungsschema). |
In .NET Framework 2.0 oder höher ist die Anzeigestatusvalidierung standardmäßig aktiviert. Zur Durchführung der Validierung werden ASP.NET-Prozessidentitätsinformationen verwendet.Die Validierung anhand der Prozessidentität ist in einem Cluster- oder Webfarmszenario nicht möglich, da dort die Prozessidentität für jeden Knoten variiert.Um alle Knoten zu zwingen, dieselbe Prozessidentität zu verwenden, können Sie einen Validierungsschlüssel generieren, um die Anzeigestatusvalidierung zu unterstützen, und jeden Knoten manuell für dessen Verwendung konfigurieren.
Generieren Sie einen Validierungsschlüssel.Sie können die vom .NET Framework bereitgestellte Funktionalität zur automatischen Generierung verwenden, oder Sie können den Schlüssel auf andere Weise erstellen.Verwenden Sie die Option AutoGenerate nicht, wenn Sie das validationKey-Attribut festlegen.
Generieren Sie einen Entschlüsselungsschlüssel.Für den Entschlüsselungsschlüssel können Sie einen expliziten Wert erstellen oder decryptionKey auf AutoGenerate festlegen.
Öffnen Sie die Datei Web.config für jeden Knoten in der Webfarm, und legen Sie das machineKey-Element fest.Sie müssen den Validierungsschlüssel, den Entschlüsselungsschlüssel und den Verschlüsselungstyp angeben, der für die Validierung von Daten verwendet wird.
Wiederholen Sie diese Schritte für jeden Knoten in der Webfarm- oder Clusterbereitstellung.
<httHandlers>
Das ReportViewer-Webserversteuerelement enthält einen HTTP-Handler zum Abrufen von Bildern, die in Berichte eingebettet wurden oder auf die in Berichten verwiesen wird. Weitere Funktionen des Handlers sind das Exportieren von Berichten in verschiedenen Ausgabeformaten, die Bereitstellung eines Kalendersteuerelements zur Auswahl von Datumsangaben für einen Berichtsparameter, das Offenhalten einer Berichtssitzung und die Unterstützung der clientseitigen Skriptfunktionalität im ReportViewer-Steuerelement.
Die Konfigurationseinstellungen für die HTTP-Handler werden im system.web/httpHandlers-Element und im system.webServer/handlers-Element angegeben.aus der Web.config-Datei der Anwendung.Der in system.web/httpHandler angegebene Handler wird von Internetinformationsdienste (Internet Information Services, IIS) 6.0 oder 7.0 im klassischen Modus verwendet, wohingegen der in system.webServer/handlers angegebene Handler von IIS 7.0 im integrierten Modus verwendet wird.Die Konfigurationseinstellungen werden automatisch in die Datei "Web.config" eingetragen, wenn das ReportViewer-Webserversteuerelement aus der Toolbox in das Web Form gezogen wird.Die HTTP-Handler sind Teil des Steuerelements und können nicht entfernt oder ersetzt werden.
Wichtig |
---|
Um IIS 7.0 im integrierten Modus zu verwenden, müssen Sie den HTTP-Handler aus system.web/httpHandlers entfernen.Andernfalls führt IIS die Anwendung nicht aus, sondern zeigt eine Fehlermeldung an. |
Sie müssen den HTTP-Handler, der für Ihre IIS-Version gilt, im jeweiligen Abschnitt beibehalten.Wenn Sie die Konfigurationseinstellungen des HTTP-Handlers entfernen oder ändern, zeigt das ReportViewer-Webserversteuerelement im Web Form eine Fehlermeldung an. Darin werden Sie aufgefordert, diese wieder dem jeweiligen Abschnitt in der Datei "web.config" hinzuzufügen.Unten werden die HTTP-Handler in system.web/httpHandlers und system.webServer/handlers angezeigt:
<system.web>
<httpHandlers>
<add path="Reserved.ReportViewerWebControl.axd" verb="*"
type="Microsoft.Reporting.WebForms.HttpHandler,
Microsoft.ReportViewer.WebForms, Version=10.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false"
/>
</httpHandlers>
</system.web>
<system.webServer>
<handlers>
<add name="ReportViewerWebControlHandler"
preCondition="integratedMode"
verb="*" path="Reserved.ReportViewerWebControl.axd"
type="Microsoft.Reporting.WebForms.HttpHandler,
Microsoft.ReportViewer.WebForms, Version=10.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
/>
</handlers>
</system.webServer>
Siehe auch
Verweis
httpHandlers-Element (ASP.NET-Einstellungsschema)
Konzepte
Hinzufügen und Konfigurieren der ReportViewer-Steuerelemente
Bereitstellen von Berichten und ReportViewer-Steuerelementen