Share via


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 <appSettings> 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. Si todos los informes utilizados en la aplicación se procesan en el mismo servidor de informes, resulta más eficaz utilizar la clave ReportViewerServerConnection para especificar una vez la información de conexión en el archivo web.config que almacenar las propiedades ReportServerUrl y TimeOut en cada objeto ServerReport de la sesión.

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.

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é de ensamblados global (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, sólo se almacena la página actual en un momento dado. Esta configuración sólo 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 <system.web> 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 es 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, 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 grupo 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 Autogenerar para configurar el atributo validationKey.

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

  3. Abra el archivo web.config en cada nodo del grupo 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 del grupo 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 y mantener abierta una sesión de informe.

Los parámetros de configuración para el controlador HTTP se especifican en el elemento httpHandlers del archivo web.config de la aplicación. Dichos parámetros se introducen automáticamente en el archivo web.config al arrastrar el control de servidor web ReportViewer desde el cuadro de herramientas a la página Web.

Los parámetros de configuración del controlador HTTP no se pueden quitar ni modificar. Si modifica o elimina la configuración de <httpHandlers> en el archivo web.config, el control de servidor ReportViewer mostrará el error siguiente al visualizar la página .aspx: "El controlador HTTP de controles web ReportViewer no está registrado en el archivo web.config de la aplicación". El mensaje de error incluye la información de configuración requerida por el controlador HTTP; puede copiar esta configuración textualmente en el archivo web.config. La cadena será similar a la del siguiente ejemplo (tenga en cuenta que la información de la versión y de PublicKeyToken será distinta):

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

El controlador HTTP forma parte del control y no puede quitarse o reemplazarse para que incorpore funcionalidad personalizada.

Vea también

Conceptos

Agregar y configurar los controles ReportViewer
Implementar informes y controles ReportViewer