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.

Vous pouvez également spécifier une classe qui implémente l'interface IReportServerConnection2, qui vous permet de spécifier des cookies et des en-têtes personnalisés.

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.

Dans Visual Studio 2010, une nouvelle interface [T:Microsoft.Reporting.WebForms.]IReportViewerMessages3 est ajoutée au contrôle ReportViewer. Pour utiliser tous les messages de l'interface utilisateur que le contrôle ReportViewer fournit, spécifiez une classe qui implémente l'interface IReportViewerMessages3ici.

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.

Notes

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 ou ultérieure). Pour plus d'informations sur la configuration de la validation de l'état d'affichage pour un réseau de services Web, consultez machineKey Element.

Dans le .NET Framework 2.0 ou version ultérieure, 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 récupérer des images incorporées ou référencées dans un rapport, exporter des rapports sous différents formats de sortie, fournir un contrôle calendrier (permettant de sélectionner des dates pour un paramètre de rapport), maintenir une session de rapport ouverte et prendre en charge les fonctionnalités de script côté client dans le contrôle ReportViewer.

Les paramètres de configuration pour les gestionnaires HTTP sont spécifiés dans l'élément system.web/httpHandlers et l'élément system.webServer/handlers du fichier Web.config de l'application. Le gestionnaire spécifié dans system.web/httpHandler est utilisé par IIS (Internet Information Services) version 6.0 ou 7.0 en mode classique, alors que le gestionnaire spécifié dans system.webServer/handlers est utilisé par IIS 7.0 en mode intégré. 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 formulaire Web. Les gestionnaires HTTP font partie du contrôle ; ils ne peuvent pas être supprimés ni remplacés.

Important

Pour utiliser IIS 7.0 en mode intégré, vous devez supprimer le gestionnaire HTTP dans system.web/httpHandlers. Sinon, IIS n'exécutera pas l'application, mais affichera à la place un message d'erreur.

Vous devez conserver le gestionnaire HTTP qui s'applique à votre version IIS dans sa section respective. Si vous supprimez ou modifiez les paramètres de configuration de gestionnaire HTTP, le contrôle serveur Web ReportViewer dans votre formulaire Web affichera un message d'erreur qui vous indique de le rajouter à la section respective dans le fichier web.config. Les gestionnaires HTTP dans system.web/httpHandlers et system.webServer/handlers sont dupliqués ci-dessous :

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

Voir aussi

Concepts

Ajout et configuration de contrôles ReportViewer

Déploiement de rapports et de contrôles ReportViewer

Autres ressources

httpHandlers

handler