Partager via


Paramètres Web.config pour ReportViewer

Si vous utilisez le contrôle serveur Web ReportViewer, vous pouvez définir les paramètres de l'application Web.config ASP.NET pour configurer le ReportViewer au moment de l'exécution. Cette rubrique décrit les paramètres de l'application Web.config qui permettent de se connecter à un serveur de rapports distant, stocker des flux temporaires et fournir des chaînes personnalisées à l'interface utilisateur de contrôle. Elle fournit également des recommandations sur la manière d'utiliser les paramètres <sessionState> et <machineKey> des applications ReportViewer qui s'exécutent dans des déploiements de batteries de serveurs Web et explique comment la section Web.config <httpHandlers> définit les paramètres du gestionnaire HTTP utilisé par le contrôle serveur Web ReportViewer.

Configuration des éléments <appSettings> des contrôles ReportViewer

Pour configurer des paramètres d'application personnalisés pour le contrôle serveur Web ReportViewer, vous pouvez ajouter les clés suivantes à la section <appSettings> dans le fichier Web.config de l'application. La valeur de ces clés est un nom de classe complet qui implémente une interface spécifique.

Clé Utilisée par

ReportViewerServerConnection

Cette clé spécifie une classe qui implémente l'interface IReportServerConnection. Cette interface fournit des informations de connexion au serveur de rapports lorsque l'état de session est désactivé ou lorsque vous ne souhaitez pas stocker des informations de connexion dans la session ASP.NET. Si tous les rapports utilisés dans l'application sont traités sur le même serveur de rapports, il est plus efficace d'utiliser la clé ReportViewerServerConnection pour spécifier les informations de connexion une fois dans le fichier Web.config plutôt que de stocker les propriétés ReportServerUrl et TimeOut sur chaque objet ServerReport dans la session.

ReportViewerTemporaryStorage

Cette clé spécifie une classe qui implémente l'interface ITemporaryStorage. Cette interface permet de stocker les flux temporaires envoyés par le serveur de rapports au lieu de les conserver en mémoire, ce qui améliore l'évolutivité de l'application.

ReportViewerMessages

Cette clé spécifie une classe qui implémente l'interface IReportViewerMessages. Cette interface permet de fournir des messages d'interface utilisateur personnalisés.

Spécification de la classe complète

La valeur de chaque clé est une classe qui implémente l'interface et l'emplacement de l'assembly qui la contient. Dans ASP.NET, il existe plusieurs manières de spécifier la classe à l'aide de cette syntaxe :

<add key="MyKeyName" value="MyNamespace.MyClass, Location" />

Si la classe est implémentée dans un assembly, l'emplacement peut être le dossier bin de l'application ou le cache GAC (Global Assembly Cache). Dans ce cas, la valeur de la clé doit être spécifiée en tant que nom d'assembly complet qui inclut les valeurs de jeton de version, de culture et de clé publique. Si la classe est implémentée dans un fichier de code source dans le dossier APP_CODE de l'application, ce dossier est également l'emplacement à spécifier.

Voici des exemples de méthodes valides pour spécifier une classe complète, dans le cache GAC, le dossier bin de l'application ou le dossier APP_CODE :

<add key="ReportViewerServerConnection" value="MyNamespace.MyClass, MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken= 00000000000000000 "/>

-- OU --

<add key="ReportViewerServerConnection" value="MyNamespace.MyClass, MyAssembly"/>

-- OU --

<add key="ReportViewerServerConnection" value=" MyNamespace.MyClass, APP_CODE"/>

ReportViewerServerConnection

Si vous implémentez l'interface IReportServerConnection ou IReportServerConnection2 pour fournir des informations de connexion au serveur de rapports, vous devez définir la clé ReportViewerServerConnection dans le fichier Web.config. La clé spécifie votre classe personnalisée qui implémente IReportServerConnection et l'emplacement de l'assembly ou du fichier source qui la contient.

Si vous fournissez la classe dans la clé ReportViewerServerConnection, veillez à ne pas définir d'autres propriétés sur l'objet ServerReport susceptibles d'entrer en conflit avec elle. En particulier, ne définissez pas les propriétés ServerReport.Timeout, ServerReport.ReportServerUrl, ServerReport.ReportServerCredentials, ServerReport.Cookies ou ServerReport.Headers.

L'exemple suivant illustre la syntaxe de la clé ReportViewerServerConnection. Il spécifie la classe qui implémente IReportServerConnection2 dans un assembly nommé MyAssembly situé dans le dossier Bin de l'application :

<appSettings>
    <add key="ReportViewerServerConnection" value="MyNamespace.MyRVServerConnectionClass, MyAssembly"/>
</appSettings>

Pour consulter un exemple de code d'une classe qui implémente IReportServerConnection, consultez Spécification des connexions et des informations d'identification du contrôle serveur Web ReportViewer.

ReportViewerTemporaryStorage

Vous devez définir la clé ReportViewerTemporaryStorage pour spécifier un objet qui implémente l'interface ITemporaryStorage. Implémentez cette interface si vous souhaitez stocker les flux temporaires envoyés par le serveur de rapports plutôt que les conserver en mémoire. Chaque demande devant être achevée avant qu'une nouvelle demande ne démarre, seule la page actuelle est stockée à un moment donné. Ce paramètre n'est utilisé que pour les rapports de serveur. L'exemple suivant illustre la syntaxe de la clé ReportViewerTemporaryStorage :

<appSettings>
    <add key="ReportViewerTemporaryStorage" value="MyNamespace.MyTemporaryStorageClass, MyAssembly" />
</appSettings>

ReportViewerMessages

Vous devez définir la clé ReportViewerMessages pour spécifier un objet implémentant IReportViewerMessages, qui est une interface fournissant des chaînes personnalisées au contrôle ReportViewer. Cette interface vous permet de prendre en charge la localisation de chaîne pour d'autres langages que ceux fournis par défaut. L'exemple suivant illustre la syntaxe de la clé ReportViewerMessages.

<appSettings>
    <add key="ReportViewerMessages" value="MyNamespace.MyRVMessageClass, MyAssembly" />
</appSettings>

Configuration des éléments <system.web> des contrôles ReportViewer

Dans le fichier Web.config de l'application, vous pouvez définir des paramètres dans la section <system.web> pour déterminer le comportement des sessions de rapport au moment de l'exécution. Le contrôle ReportViewer utilise également cette section pour enregistrer les paramètres d'un gestionnaire HTTP fourni par le contrôle. Les éléments suivants sont utilisés : <sessionState>, <machineKey> et <httpHandler>.

<sessionState>

Vous pouvez utiliser l'élément sessionState pour déterminer si l'état de session est stocké dans un processus, désactivé ou géré par le service d'état ASP.NET hors processus.

InProc est la valeur par défaut et vous pouvez l'utiliser si votre application s'exécute sur un seul ordinateur. Ne l'utilisez pas si les rapports sont exécutés dans une application incluse dans une batterie de serveurs Web.

Off ne doit pas être utilisé si le contrôle ReportViewer est en train de traiter un fichier de définition de rapport client (.rdlc) en mode local. Le mode local requiert un état de session. Si vous utilisez le mode distant, vous pouvez désactiver l'état de session. Dans ce cas, veillez à spécifier ReportViewerServerConnection dans l'élément appSetting.

Vous pouvez également utiliser les autres modes <sessionState> : Custom, SQLServer et StateServer.

<machineKey>

Si vous déployez un contrôle ReportViewer dans un cluster ou une batterie de serveurs Web, vous devez spécifier l'élément <machineKey> afin que tous les nœuds de la batterie utilisent la même identité de processus, ce qui garantit que l'état d'affichage enregistré sur un ordinateur peut être lu sur n'importe quel autre ordinateur.

NoteRemarque

La définition de l'élément <machineKey> pour synchroniser l'état d'affichage dans une batterie de serveurs Web est recommandée dans la documentation de Microsoft .NET Framework 2.0. Pour plus d'informations sur la configuration de la validation de l'état d'affichage pour un réseau de services Web, consultez machineKey, élément (Schéma des paramètres ASP.NET).

Dans le .NET Framework 2.0, la validation de l'état d'affichage est activée par défaut et utilise les informations d'identité de processus ASP.NET pour effectuer la validation. La validation par identité de processus ne fonctionne pas dans un scénario de cluster ou de batterie de serveurs Web dans lequel l'identité de processus varie d'un nœud à l'autre. Pour que tous les nœuds utilisent la même identité de processus, vous pouvez générer une clé de validation afin de prendre en charge la validation de l'état d'affichage et de configurer manuellement chaque nœud à utiliser.

  1. Générez une clé de validation. Vous pouvez utiliser la fonctionnalité de génération automatique fournie par le .NET Framework ou créer la clé d'une autre façon. N'affectez pas l'option AutoGenerate à l'attribut validationKey.

  2. Générez une clé de déchiffrement. Pour la clé de déchiffrement, vous pouvez créer une valeur explicite ou affecter la valeur AutoGenerate à l'attribut decryptionKey.

  3. Ouvrez le fichier Web.config pour chaque nœud de la batterie de serveurs Web puis définissez l'élément machineKey. Vous devez spécifier la clé de validation, la clé de déchiffrement et le type de chiffrement utilisés pour la validation des données.

  4. Répétez ces étapes pour chaque nœud impliqué dans le déploiement du cluster ou de la batterie de serveurs Web.

<httHandlers>

Le contrôle serveur Web ReportViewer inclut un gestionnaire HTTP pour afficher des images incorporées ou référencées dans un rapport, exporter des rapports dans différents formats de sortie, fournir un contrôle calendrier (permettant de sélectionner des dates pour un paramètre de rapport) et maintenir une session de rapport ouverte.

Des paramètres de configuration pour le gestionnaire HTTP sont spécifiés dans l'élément httpHandlers du fichier Web.config de l'application. Les paramètres de configuration sont entrés dans le fichier Web.config automatiquement lorsque vous faites glisser le contrôle serveur Web ReportViewer de la boîte à outils vers votre page Web.

Vous ne pouvez pas supprimer ou modifier les paramètres de configuration du gestionnaire HTTP. Si vous modifiez ou supprimez les paramètres <httpHandlers> dans Web.config, le contrôle serveur Web ReportViewer génère l'erreur suivante lorsque vous affichez la page .aspx :« Le gestionnaire HTTP de contrôles Web de la visionneuse de rapports n'a pas été enregistré dans le fichier web.config de l'application ». Le message d'erreur comprend les informations de configuration nécessaires au gestionnaire HTTP, vous pouvez copier ces paramètres mot pour mot dans le fichier Web.config. La chaîne est similaire à l'exemple suivant (les informations de version et PublicKeyToken seront différentes) :

<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>

Le gestionnaire HTTP fait partie du contrôle et ne peut pas être supprimé ou remplacé par des fonctionnalités personnalisées que vous fournissez.

Voir aussi

Concepts

Ajout et configuration de contrôles ReportViewer
Déploiement de rapports et de contrôles ReportViewer