Partilhar via


Configurações de Web.config para ReportViewer

Se você estiver usando o ReportViewer controle de servidor Web, você pode definir ASP.NET Web. config configurações do aplicativo para configurar o ReportViewer em tempo de execução. Este tópico descreve as configurações do aplicativo Web. config usadas para conectar a um servidor de relatório remoto, armazenar fluxos temporários e fornecer as cadeias de caracteres personalizadas na interface de usuário do controle. Ele também fornece recomendações sobre como usar <sessionState> e <machineKey> configurações para ReportViewer aplicativos executados em implantações de Web farm, e explica como o <httpHandlers> seção Web. config define as configurações para o manipulador HTTP usado pelo ReportViewer controle de servidor Web.

Configurando elementos < appSettings > para controles do ReportViewer

Para definir configurações de aplicativo personalizado para o ReportViewer controle de servidor Web, você pode adicionar as seguintes chaves para o <appSettings> seção no arquivo de Web. config do aplicativo. O valor dessas chaves é um nome totalmente qualificado da classe que implementa uma interface específica.

Key

Usado por

ReportViewerServerConnection

Essa chave especifica uma classe que implementa o IReportServerConnection interface. Essa interface fornece informações de conexão do servidor de relatório quando o estado da sessão é desativado ou quando você não deseja armazenar informações de conexão na sessão do ASP.NET.

Você também pode especificar uma classe que implementa o IReportServerConnection2 interface, que permite que você especifique os cookies e cabeçalhos personalizados.

ReportViewerTemporaryStorage

Essa chave especifica uma classe que implementa o ITemporaryStorage interface. Essa interface é usada para armazenar os fluxos temporários que são enviados pelo servidor de relatório em vez de armazená-los na memória, melhorando a escalabilidade do seu aplicativo.

ReportViewerMessages

Essa chave especifica uma classe que implementa o IReportViewerMessages interface. Essa interface é usada para fornecer mensagens de interface de usuário personalizada.

Em Visual Studio 2010 e acima, uma nova interface [T:Microsoft.Reporting.WebForms.]IReportViewerMessages3 é adicionada para o controle ReportViewer. Para usar todos os usuários interface mensagens ReportViewer fornece controle, especificar uma classe que implementa o IReportViewerMessages3 interface aqui.

Especificando a classe totalmente qualificada

O valor para cada chave é uma classe que implementa a interface e o local do assembly que o contém. No ASP.NET, existem várias maneiras de especificar a classe usando esta sintaxe:

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

Se a classe é implementada em um assembly, o local pode ser a pasta bin do aplicativo ou cache de assembly global (GAC). Nesse caso, o valor da chave deve ser especificado como um nome de assembly totalmente qualificado que inclui versão, cultura e valores de tokens de chave pública. Como alternativa, se a classe é implementada em um arquivo de código fonte na pasta APP_CODE do seu aplicativo, essa pasta é o local em que você deve especificar.

Os exemplos a seguir são válidas maneiras de especificar uma classe totalmente qualificada no GAC, pasta bin do aplicativo, ou na pasta 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

Se você implementar a IReportServerConnection ou IReportServerConnection2 a interface para fornecer informações de conexão do servidor de relatório, você deve definir o ReportViewerServerConnection chave no arquivo Web. config. A chave especifica sua classe personalizada que implementa IReportServerConnection e o local do arquivo assembly ou uma fonte que o contém.

Se você fornecer a classe de ReportViewerServerConnection chave, certifique-se de que você não defina outras propriedades no ServerReport objeto pode entrar em conflito com ele. Especificamente, não defina o ServerReport.Timeout, ServerReport.ReportServerUrl, ServerReport.ReportServerCredentials, ServerReport.Cookies, or ServerReport.Headers propriedades.

O exemplo a seguir ilustra a sintaxe para o ReportViewerServerConnection chave. Especifica a classe que implementa IReportServerConnection2 em um assembly denominado MyAssembly que está localizado na pasta Bin do aplicativo:

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

Para exibir um exemplo de código de uma classe que implementa IReportServerConnection, consulte Especificando conexões e credenciais para o Controle do Servidor Web do ReportViewer.

ReportViewerTemporaryStorage

Você deve definir o ReportViewerTemporaryStorage chave para especificar um objeto que implementa o ITemporaryStorage interface. Implemente essa interface, se você deseja armazenar os fluxos temporários que são enviados pelo servidor de relatório em vez de armazená-los na memória. Porque cada solicitação deve ser concluída antes que uma nova solicitação pode ser iniciada, somente a página atual é armazenada em um determinado momento. Essa configuração é usada somente para relatórios do servidor. O exemplo a seguir ilustra a sintaxe para o ReportViewerTemporaryStorage chave:

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

ReportViewerMessages

Você deve definir o ReportViewerMessages chave para especificar um objeto que implementa IReportViewerMessages, que está em uma interface que fornece as cadeias de caracteres personalizadas para o ReportViewer controle. Você pode usar essa interface para oferecer suporte à localização de cadeia de caracteres para idiomas diferentes daqueles fornecidos por padrão. O exemplo a seguir ilustra a sintaxe para o ReportViewerMessages chave.

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

Configurando elementos < System. Web > para controles do ReportViewer

No arquivo de Web. config do aplicativo, você pode definir configurações de <system.web> seção para determinar o comportamento da sessão de relatório em tempo de execução. O ReportViewer controle também usa esta seção para registrar as configurações para um manipulador HTTP que fornece o controle. Os seguintes elementos são usados: <sessionState>, <machineKey>, e <httpHandler>.

< sessionState >

Você pode usar o sessionState elemento para determinar se o estado da sessão é armazenado no processo, desativada ou tratados pelo serviço de estado do ASP.NET de fora do processo.

InProcé a configuração padrão e você pode usá-lo se seu aplicativo for executado em um computador. Não use essa configuração se seus relatórios executados em um aplicativo executado em um Web farm.

Offnão deve ser usado se o ReportViewer controle está processando um arquivo de definição (. rdlc) do relatório de cliente no modo local. Modo local requer o estado da sessão. Se você estiver usando o modo remoto, você pode desativar o estado da sessão. Se você desativar o estado de sessão, certifique-se de especificar ReportViewerServerConnection no <appSetting> elemento.

Você também pode usar o outro <sessionState> modos: Custom, SQLServer, e StateServer.

< machineKey >

Se você estiver implantando um ReportViewer controle em um Web farm ou um cluster, você deve especificar o <machineKey> elemento para forçar todos os nós no farm para usar a mesma identidade de processo, garantindo assim que o estado de exibição salvo de um computador pode ser lidos por qualquer computador.

Dica

Configurando o <machineKey> elemento para sincronizar o estado de exibição em uma Web farm é uma prática recomendada que fornecidas na documentação do Microsoft .NET Framework (2.0 ou posterior).Para obter mais informações sobre como configurar a validação do estado de exibição para uma rede de serviços da Web, consulte machineKey Element.

No .NET Framework 2.0 ou posterior, a validação do estado de exibição é habilitada por padrão e usa informações de identidade de processo do ASP.NET para executar a validação. Validação de identidade de processo não funciona em um cluster ou um cenário de farm da Web em que a identidade do processo varia para cada nó. Para forçar todos os nós usam a mesma identidade de processo, você pode gerar uma chave de validação para oferecer suporte à validação do estado de exibição e configurar manualmente cada nó para usá-lo.

  1. Gere uma chave de validação. Você pode usar a funcionalidade de geração automática fornecida pelo .NET Framework, ou você pode criar a chave de alguma outra forma. Não use essa opção ao definir o validationKey atributo.

  2. Gere uma chave de descriptografia. Para a chave de descriptografia, você pode criar um valor explícito ou definir decryptionKey para gerar automaticamente.

  3. Abra o arquivo Web. config para cada nó no farm da Web e defina o machineKey elemento. Você deve especificar o tipo de criptografia usado para validação de dados, chave de descriptografia e a chave de validação.

  4. Repita essas etapas para cada nó na implantação da Web farm ou cluster.

< httHandlers >

O ReportViewer Web de controle de servidor inclui um manipulador HTTP que é usado para recuperar imagens que são inseridas ou referenciados em um relatório, exportar relatórios para formatos de saída, fornecem um controle de calendário usada para selecionar datas para um parâmetro de relatório, manter uma sessão de relatório aberto e oferecer suporte à funcionalidade de script do lado do cliente em cotrol o ReportViewer.

Definições de configuração para os manipuladores HTTP são especificadas no system.web/httpHandlers elemento e o system.webServer/handlers elemento. de seu arquivo Web. config do aplicativo. O manipulador especificado em system.web/httpHandler é usado por serviços de informações da Internet (IIS) 6.0 ou IIS 7.0 no modo clássico, enquanto o manipulador especificado em system.webServer/handlers é usado pelo IIS 7.0 no modo integrado. As definições de configuração são inseridas automaticamente no arquivo Web. config quando você arrasta o controle ReportViewer Web server da caixa de ferramentas para seu formulário da Web. Os manipuladores HTTP são parte do controle; não pode ser removidos ou substituídos.

Importante

Para usar o IIS 7.0 no modo integrado, você deve remover o manipulador HTTP no system.web/httpHandlers.Caso contrário, o IIS não executará o aplicativo, mas exibirá uma mensagem de erro em vez disso.

Você deve manter o manipulador HTTP que se aplica à sua versão do IIS em sua respectiva seção. Se você remover ou modificar as definições de configuração do manipulador HTTP, o ReportViewer controle de servidor Web em seu Web form exibirá uma mensagem de erro que informa que você deve adicioná-lo de volta para a respectiva seção no arquivo Web. config. Os manipuladores HTTP em ambos os system.web/httpHandlers e system.webServer/handlers duplicado abaixo:

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

Consulte também

Conceitos

Adicionando e configurando os controles do ReportViewer

Implantar relatórios e controles do ReportViewer

Outros recursos

httpHandlers

handler