Freigeben über


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. Wenn alle in der Anwendung verwendeten Berichte vom selben Berichtsserver verarbeitet werden, ist es effizienter, mithilfe des ReportViewerServerConnection-Schlüssels die Verbindungsinformationen einmalig in der Datei Web.config anzugeben, statt die ReportServerUrl-Eigenschaft und die TimeOut-Eigenschaft für jedes ServerReport-Objekt der Sitzung zu speichern.

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.

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.

NoteHinweis

Die Festlegung des <machineKey>-Elements zur Synchronisierung des Anzeigestatus in einer Webfarm ist eine empfohlene bewährte Methode in der Dokumentation zu Microsoft .NET Framework 2.0. Weitere Informationen zum Konfigurieren der Anzeigestatusüberprüfung für ein Netzwerk von Webdiensten finden Sie unter machineKey-Element (ASP.NET-Einstellungsschema).

In .NET Framework 2.0 ist die Anzeigestatusüberprüfung standardmäßig aktiviert. Zur Durchführung der Überprüfung werden ASP.NET-Prozessidentitätsinformationen verwendet. Die Überprüfung 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 Überprüfungsschlüssel generieren, um die Anzeigestatusüberprüfung zu unterstützen, und jeden Knoten manuell für dessen Verwendung konfigurieren.

  1. Generieren Sie einen Überprüfungsschlü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.

  2. Generieren Sie einen Entschlüsselungsschlüssel. Für den Entschlüsselungsschlüssel können Sie einen expliziten Wert erstellen oder decryptionKey auf AutoGenerate festlegen.

  3. Öffnen Sie die Datei Web.config für jeden Knoten in der Webfarm, und legen Sie das machineKey-Element fest. Sie müssen den Überprüfungsschlüssel, den Entschlüsselungsschlüssel und den Verschlüsselungstyp angeben, der für die Überprüfung von Daten verwendet wird.

  4. Wiederholen Sie diese Schritte für jeden Knoten in der Webfarm- oder Clusterbereitstellung.

<<httHandlers>>

Das ReportViewer-Webserversteuerelement enthält einen HTTP-Handler zum Anzeigen 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 und das Offenhalten einer Berichtssitzung.

Die Konfigurationseinstellungen für den HTTP-Handler werden im httpHandlers-Element der Datei Web.config Ihrer Anwendung angegeben. Die Konfigurationseinstellungen werden in die Datei Web.config automatisch eintragen, wenn das ReportViewer-Webserversteuerelement aus der Toolbox auf die Webseite gezogen wird.

Die HTTP-Handlerkonfigurationseinstellungen können weder entfernt noch geändert werden. Wenn Sie die <httpHandlers>-Einstellungen in der Datei Web.config ändern oder löschen, gibt das ReportViewer-Webserversteuerelement beim Anzeigen der ASPX-Seite folgende Fehlermeldung aus: "Der HTTP-Handler des ReportViewer-Websteuerelements ist in der Datei Web.config der Anwendung nicht registriert". Die Fehlermeldung beinhaltet die für den HTTP-Handler erforderlichen Konfigurationsinformationen. Diese Einstellungen können unverändert in die Datei Web.config kopiert werden. Die Zeichenfolge ist der im folgenden Beispiel ähnlich (beachten Sie, dass die Versionsinformationen und PublicKeyToken unterschiedlich sind):

<httpHandlers>
   <add path="Reserved.ReportViewerWebControl.axd" verb="*" 
   type="Microsoft.Reporting.WebForms.HttpHandler, 
   Microsoft.ReportViewer.WebForms, Version=8.0.0.0, 
   Culture=neutral, PublicKeyToken=0000000000000000" validate="false" 
   />
</httpHandlers>

Der HTTP-Handler ist Teil des Steuerelements. Er kann nicht entfernt oder durch eine von Ihnen bereitgestellte benutzerdefinierte Funktionalität ersetzt werden.

Siehe auch

Konzepte

Hinzufügen und Konfigurieren der ReportViewer-Steuerelemente
Bereitstellen von Berichten und ReportViewer-Steuerelementen