Configuración de web.config para ReportViewer

Si utiliza el control de servidor web ReportViewer, puede establecer la configuración de la aplicación en el archivo web.config de ASP.NET para configurar ReportViewer en tiempo de ejecución.En este tema se describe la configuración de la aplicación de web.config utilizada para conectarse con un servidor de informes remoto, almacenar secuencias temporales y proporcionar cadenas personalizadas a la interfaz de usuario de control.También se proporcionan recomendaciones sobre cómo utilizar la configuración de <sessionState> y <machineKey> para las aplicaciones de ReportViewer que se ejecutan en implementaciones de granjas de servidores web, y se explica cómo la sección <httpHandlers> de web.config define la configuración para el controlador HTTP utilizado por el control de servidor web ReportViewer.

Configurar los elementos de &lt;appSettings&gt; para los controles ReportViewer

Si desea definir una configuración personalizada de la aplicación para el control de servidor web ReportViewer, agregue las claves siguientes a la sección <appSettings> del archivo web.config de la aplicación.El valor de estas claves es un nombre de clase completo que implementa una interfaz específica.

Clave

Utilizada por

ReportViewerServerConnection

Esta clave especifica una clase que implementa la interfaz IReportServerConnection.Esta interfaz proporciona información sobre la conexión con el servidor de informes cuando se deshabilita el estado de la sesión o cuando no se desea almacenar información de conexión en la sesión de ASP.NET.

También puede especificar una clase que implementa la interfaz IReportServerConnection2, la cual le permite especificar cookies y encabezados personalizados.

ReportViewerTemporaryStorage

Esta clave especifica una clase que implementa la interfaz ITemporaryStorage.Esta interfaz se utiliza para almacenar las secuencias temporales enviadas por el servidor de informes en lugar de conservarlas en la memoria, mejorando de esta manera la escalabilidad de la aplicación.

ReportViewerMessages

Esta clave especifica una clase que implementa la interfaz IReportViewerMessages.Esta interfaz se utiliza para proporcionar mensajes de interfaz de usuario personalizados.

En Visual Studio 2010 y posteriores, un nueva interfaz [T:Microsoft.Reporting.WebForms.]IReportViewerMessages3 se agrega al control ReportViewer.Para utilizar todos los mensajes de la interfaz de usuario que proporciona el control ReportViewer, especifique una clase que implemente la interfaz IReportViewerMessages3 aquí.

Especificar la clase completa

El valor de cada una de las claves es una clase que implementa la interfaz y la ubicación del ensamblado que la contiene.En ASP.NET, hay varias maneras de especificar la clase mediante esta sintaxis:

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

Si la clase está implementada en un ensamblado, la ubicación puede ser la carpeta bin de la aplicación o la caché global de ensamblados (GAC).En este caso, el valor de la clave se debe especificar como un nombre de ensamblado completo que incluya la versión, la referencia cultural y los valores token de clave pública.De forma alternativa, si la clase está implementada en un archivo de código fuente en la carpeta APP_CODE de la aplicación, dicha carpeta es la ubicación que deberá especificar.

Los ejemplos siguientes son formas válidas de especificar una clase completa en la GAC, en la carpeta bin de la aplicación o en la carpeta APP_CODE:

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

- O bien -

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

- O bien -

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

ReportViewerServerConnection

Si implementa la interfaz IReportServerConnection o IReportServerConnection2 para proporcionar información sobre la conexión del servidor de informes, debe definir la clave ReportViewerServerConnection en el archivo web.config.Esta clave especifica la clase personalizada que implementa IReportServerConnection y la ubicación del ensamblado o del archivo de origen que la contiene.

Si proporciona la clase en la clave ReportViewerServerConnection, asegúrese de no establecer otras propiedades en el objeto ServerReport que puedan entrar en conflicto con ella.En concreto, no establezca las propiedades ServerReport.Timeout, ServerReport.ReportServerUrl, ServerReport.ReportServerCredentials, ServerReport.Cookies o ServerReport.Headers.

En el siguiente ejemplo se muestra la sintaxis para la clave ReportViewerServerConnection.Esta clave especifica la clase que implementa IReportServerConnection2 en un ensamblado denominado MyAssembly que está ubicado en la carpeta bin de la aplicación:

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

Para ver un ejemplo de código de una clase que implementa IReportServerConnection, vea Especificar las conexiones y las credenciales del control de servidor web ReportViewer.

ReportViewerTemporaryStorage

Debe establecer la clave ReportViewerTemporaryStorage para especificar un objeto que implementa la interfaz ITemporaryStorage.Implemente esta interfaz si desea almacenar las secuencias temporales enviadas por el servidor de informes en lugar de conservarlas en la memoria.Como es necesario finalizar cada solicitud antes de iniciar una nueva, solo se almacena la página actual en un momento dado.Esta configuración solo se utiliza en los informes de servidor.En el siguiente ejemplo se muestra la sintaxis para la clave ReportViewerTemporaryStorage:

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

ReportViewerMessages

Debe establecer la clave ReportViewerMessages para especificar un objeto que implementa IReportViewerMessages, que está en una interfaz que proporciona cadenas personalizadas al control ReportViewer.Puede utilizar esta interfaz para admitir la localización de cadenas en idiomas distintos de los proporcionados de manera predeterminada.En el siguiente ejemplo se muestra la sintaxis para la clave ReportViewerMessages.

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

Configurar los elementos de &lt;system.web&gt; para los controles ReportViewer

En el archivo web.config de la aplicación, puede definir la configuración en la sección <system.web> para determinar el comportamiento de la sesión de informes en tiempo de ejecución.El control ReportViewer también utiliza esta sección para registrar la configuración de un controlador HTTP proporcionado por él mismo.Se utilizan los siguientes elementos: <sessionState>, <machineKey> y <httpHandler>.

<sessionState>

Puede utilizar el elemento sessionState para determinar si el estado de la sesión se encuentra almacenado en proceso, deshabilitado o controlado por el servicio de estado de ASP.NET fuera de proceso.

InProc es la configuración predeterminada y puede utilizarla si la aplicación se ejecuta en un equipo.No utilice esta configuración si los informes se ejecutan en una aplicación que se ejecuta en una granja de servidores web.

No debe utilizarse Off si el control ReportViewer procesa un archivo de definición de informe de cliente (.rdlc) en el modo local.El modo local requiere el estado de la sesión.Si utiliza un modo remoto, puede deshabilitar el estado de la sesión.Si deshabilita el estado de la sesión, debe especificar ReportViewerServerConnection en el elemento <appSetting>.

También puede utilizar los otros modos de<sessionState>: Custom, SQLServer y StateServer.

<machineKey>

Si implementa un control ReportViewer en una granja de servidores web o un clúster, debe especificar el elemento <machineKey> para que todos los nodos de la granja utilicen la misma identidad de proceso, lo que garantizará que el estado de vista guardado desde un equipo se pueda leer en todos.

[!NOTA]

La práctica recomendada en la documentación de Microsoft .NET Framework (2.0 o posterior) consiste en configurar el elemento <machineKey> para sincronizar el estado de la vista en una granja de servidores web.Para obtener más información acerca de cómo configurar la validación del estado de la vista en una red de servicios Web, vea Elemento machineKey (Esquema de configuración de ASP.NET).

En .NET Framework 2.0 o posterior, la validación del estado de la vista está habilitada de manera predeterminada y utiliza la información de la identidad de proceso de ASP.NET para realizar la validación.La validación por identidad de proceso no funciona en un escenario de clúster o granja de servidores web en el que la identidad de proceso varíe para cada nodo.Para que todos los nodos utilicen la misma identidad de proceso, puede generar una clave de validación para permitir la validación del estado de la vista y configurar manualmente cada nodo para utilizarla.

  1. Genere una clave de validación.Puede utilizar la funcionalidad de autogeneración suministrada en .NET Framework o puede crear la clave de otra forma.No utilice la opción AutoGenerate para configurar el atributo validationKey.

  2. Genere una clave de descifrado.Para la clave de descifrado, puede crear un valor explícito o establecer AutoGenerate en decryptionKey.

  3. Abra el archivo web.config en cada nodo de la granja de servidores web y configure el elemento machineKey.Debe especificar la clave de validación, la clave de descifrado y el tipo de cifrado utilizado para la validación de los datos.

  4. Repita estos pasos para cada nodo en la implementación de la granja de servidores web o clúster.

<<httpHandlers>>

El control de servidor web ReportViewer incluye un controlador HTTP que se utiliza para mostrar imágenes incrustadas en un informe o a las que se hace referencia en él, exportar informes a distintos formatos de salida, proporcionar un control de calendario que se usa para seleccionar fechas para un parámetro de informe, mantener abierta una sesión de informe y permitir la funcionalidad de scripting del lado cliente en el control ReportViewer.

Las opciones de configuración para los controladores HTTP se especifican en los elementos system.web/httpHandlers y system.webServer/handlers.del archivo Web.config de la aplicación.Internet Information Services (IIS) 6.0 o IIS 7.0 utiliza el controlador especificado en system.web/httpHandler en el modo clásico, mientras que el controlador especificado en system.webServer/handlers es utilizado por IIS 7.0 en el modo integrado.Los parámetros de configuración se introducen automáticamente en el archivo web.config al arrastrar el control de servidor web ReportViewer desde el cuadro de herramientas al formulario web.Los controladores HTTP forman parte del control; no se pueden quitar o reemplazar.

Nota importanteImportante

Para utilizar IIS 7.0 en modo integrado, debe quitar el controlador HTTP en system.web/httpHandlers.De lo contrario, IIS no ejecutará la aplicación, sino que mostrará un mensaje de error en su lugar.

Debe mantener el controlador HTTP que se aplica a su versión de IIS en su sección respectiva.Si quita o modifica los parámetros de configuración del controlador HTTP, el control de servidor web ReportViewer de su formulario Web Forms mostrará un mensaje de error indicándole que lo vuelva a agregar a la sección respectiva del archivo web.config.Los controladores HTTP de system.web/httpHandlers y system.webServer/handlers aparecen duplicados a continuación:

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

Vea también

Referencia

Elemento httpHandlers (Esquema de configuración de ASP.NET)

Conceptos

Agregar y configurar los controles ReportViewer

Implementar informes y controles ReportViewer

Otros recursos

handler