Condividi tramite


Impostazioni di Web.config per ReportViewer

Se si utilizza il controllo del server Web ReportViewer, è possibile impostare l'applicazione Web.config di ASP.NET per configurare ReportViewer in fase di esecuzione. In questo argomento vengono illustrate le impostazioni del file di configurazione dell'applicazione Web.config che consentono di eseguire la connessione a un server di rapporti remoto, archiviare flussi temporanei e fornire stringhe personalizzate all'interfaccia utente di controllo. Sono inoltre fornite indicazioni sulle modalità di utilizzo delle impostazioni <sessionState> e <machineKey> per applicazioni ReportViewer eseguite in distribuzioni di Web farm e viene illustrato come definire le impostazioni per il gestore HTTP utilizzato dal controllo del server Web ReportViewer nella sezione <httpHandlers> di Web.config.

Configurazione di elementi <appSettings> per i controlli ReportViewer

Per configurare le impostazioni di applicazione personalizzate per il controllo del server Web ReportViewer, è possibile aggiungere le seguenti chiavi alla sezione <appSettings> del file Web.config dell'applicazione. Il valore delle chiavi è un nome di classe completo che implementa un'interfaccia specifica.

Chiave

Utilizzata da

ReportViewerServerConnection

Questa chiave specifica una classe che implementa l'interfaccia IReportServerConnection. Questa interfaccia fornisce informazioni sulla connessione del server di rapporti quando lo stato della sessione è disattivato o quando non si desidera archiviare informazioni di connessione nella sessione ASP.NET.

È inoltre possibile specificare una classe che implementa l'interfaccia IReportServerConnection2 per specificare i cookie e le intestazioni personalizzate.

ReportViewerTemporaryStorage

Questa chiave specifica una classe che implementa l'interfaccia ITemporaryStorage. Questa interfaccia è utilizzata per archiviare i flussi temporanei inviati dal server di rapporti anziché conservarli in memoria, migliorando in tal modo la scalabilità dell'applicazione.

ReportViewerMessages

Questa chiave specifica una classe che implementa l'interfaccia IReportViewerMessages. Questa interfaccia è utilizzata per implementare messaggi dell'interfaccia utente personalizzati.

In Visual Studio 2010 è stata aggiunta la nuova interfaccia [T:Microsoft.Reporting.WebForms.]IReportViewerMessages3 al controllo ReportViewer. Per utilizzare tutti i messaggi dell'interfaccia utente forniti dal controllo ReportViewer, specificare qui una classe che implementa l'interfaccia IReportViewerMessages3.

Specifica della classe completa

Il valore di ogni chiave è una classe che implementa l'interfaccia e il percorso dell'assembly in cui è contenuta. In ASP.NET sono disponibili diverse modalità per specificare la classe tramite la sintassi seguente:

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

Se la classe è implementata in un assembly, può essere posizionata nella cartella bin dell'applicazione o nella Global Assembly Cache (GAC). In questo caso, è necessario specificare il valore della chiave come un nome completo dell'assembly comprensivo di versione, impostazioni cultura e token di chiave pubblica. In alternativa, se la classe è implementata in un file di codice sorgente nella cartella APP_CODE dell'applicazione, è necessario specificare il percorso della cartella.

Negli esempi seguenti sono riportate le impostazioni corrette di una classe completa posizionata nella GAC, nella cartella bin dell'applicazione o nella cartella APP_CODE:

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

-- OPPURE --

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

-- OPPURE --

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

ReportViewerServerConnection

Se le informazioni di connessione del server di rapporti sono implementate tramite l'interfaccia IReportServerConnection o IReportServerConnection2, è necessario definire la chiave ReportViewerServerConnection nel file Web.config. La chiave specifica la classe personalizzata che implementa IReportServerConnection e il percorso dell'assembly o del file di origine in cui è contenuta.

Se si fornisce la classe nella chiave ReportViewerServerConnection, accertarsi di non impostare altre proprietà dell'oggetto ServerReport che potrebbero creare conflitti. In particolare, non impostare le proprietà ServerReport.Timeout, ServerReport.ReportServerUrl, ServerReport.ReportServerCredentials, ServerReport.Cookies o ServerReport.Headers.

Nell'esempio seguente viene illustrata la sintassi per la chiave ReportViewerServerConnection, che specifica la classe per l'implementazione di IReportServerConnection2 in un assembly di nome MyAssembly ubicato nella cartella bin dell'applicazione:

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

Per visualizzare un esempio di codice di una classe che implementa IReportServerConnection, vedere Impostazioni di connessioni e credenziali per il controllo del server Web ReportViewer.

ReportViewerTemporaryStorage

Per specificare un oggetto che implementa l'interfaccia ITemporaryStorage, è necessario impostare la chiave ReportViewerTemporaryStorage. Implementare questa interfaccia se si desidera archiviare i flussi temporanei inviati al server di rapporti anziché conservarli in memoria. Poiché è necessario che ogni richiesta venga completata prima di poter eseguire una nuova richiesta, ogni volta viene archiviata solo la pagina corrente. Questa impostazione viene utilizzata solo per i rapporti del server. Nell'esempio seguente viene illustrata la sintassi per la chiave ReportViewerTemporaryStorage:

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

ReportViewerMessages

Per specificare un oggetto che implementa IReportViewerMessages, ovvero un'interfaccia che fornisce stringhe personalizzate al controllo ReportViewer, è necessario impostare la chiave ReportViewerMessages. È possibile utilizzare questa interfaccia per supportare la localizzazione delle stringhe in tutte le lingue diverse da quella predefinita. Nell'esempio seguente viene illustrata la sintassi per la chiave ReportViewerMessages.

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

Configurazione di elementi <system.web> per i controlli ReportViewer

Nel file Web.config dell'applicazione è possibile definire nella sezione <system.web> le impostazioni per determinare il comportamento della sessione del rapporto in fase di esecuzione. Questa sezione è inoltre utilizzata dal controllo ReportViewer per registrare le impostazioni del gestore HTTP fornito. Vengono utilizzati gli elementi seguenti: <sessionState>, <machineKey> e <httpHandler>.

<sessionState>

È possibile utilizzare l'elemento sessionState per determinare se lo stato della sessione viene archiviato nel processo, disattivato o gestito dal servizio di stato out-of-process di ASP.NET.

InProc è l'impostazione predefinita e può essere utilizzata se l'applicazione viene eseguita su un singolo computer. Non utilizzare questa impostazione se i rapporti sono eseguiti in un'applicazione in esecuzione in una Web farm.

L'impostazione Off non deve essere utilizzata se è in corso l'elaborazione locale di un file di definizione del rapporto del client (con estensione .rdlc) da parte del controllo ReportViewer. La modalità locale richiede lo stato della sessione. Se si utilizza la modalità remota, è possibile disattivare lo stato della sessione. Tuttavia, se si disabilita lo stato della sessione, accertarsi di specificare l'attributo ReportViewerServerConnection nell'elemento<appSetting>.

È anche possibile utilizzare le altre modalità di<sessionState>: Custom, SQLServer e StateServer.

<machineKey>

Se si distribuisce un controllo ReportViewer in una Web farm o in un cluster, è necessario specificare l'elemento <machineKey> per imporre a tutti i nodi della farm l'utilizzo della stessa identità del processo, in modo da garantire che uno stato di visualizzazione salvato in un computer venga letto dagli altri computer.

Nota

L'impostazione dell'elemento <machineKey> per la sincronizzazione dello stato di visualizzazione in una Web farm è una procedura consigliata illustrata nella documentazione di Microsoft .NET Framework 2.0 o versione successiva. Per ulteriori informazioni sulla configurazione della convalida dello stato di visualizzazione per una rete di servizi Web, vedere machineKey Element.

In .NET Framework 2.0 o versione successiva la convalida dello stato di visualizzazione è abilitata per impostazione predefinita e utilizza le informazioni sull'identità del processo ASP.NET. La convalida basata sull'identità del processo non funziona in uno scenario di cluster o di Web farm in cui l'identità del processo varia per ogni nodo. Per imporre a tutti i nodi l'utilizzo della stessa identità del processo, è possibile generare una chiave di convalida per supportare la convalida dello stato di visualizzazione e configurare manualmente ogni nodo affinché utilizzi tale chiave di convalida.

  1. Generare una chiave di convalida. È possibile utilizzare la funzionalità di generazione automatica inclusa in .NET Framework oppure creare la chiave in un altro modo. Non utilizzare l'opzione AutoGenerate quando si imposta l'attributo validationKey.

  2. Generare una chiave di decrittografia. Per la chiave di decrittografia è possibile creare un valore esplicito o impostare decryptionKey su AutoGenerate.

  3. Aprire il file Web.config per ogni nodo della Web farm e impostare l'elemento machineKey. È necessario specificare la chiave di convalida, la chiave di decrittografia e il tipo di crittografia utilizzati per la convalida dei dati.

  4. Ripetere questi passaggi per ogni nodo della Web farm o della distribuzione in cluster.

<httHandlers>

Il controllo server Web ReportViewer include un gestore HTTP che consente di recuperare immagini incorporate o con riferimenti in un rapporto, di esportare i rapporti in diversi formati di output, di utilizzare il controllo calendario per selezionare la data per un parametro del rapporto, di tenere aperta la sessione e di supportare la funzionalità di script del lato client nel controllo ReportViewer.

Le impostazioni di configurazione per i gestori HTTP sono specificate negli elementi system.web/httpHandlers e system.webServer/handlers del file Web.config dell'applicazione. Il gestore specificato in system.web/httpHandler viene utilizzato in Internet Information Services (IIS) 6.0 o IIS 7.0 in modalità classica, mentre il gestore specificato in system.webServer/handlers viene utilizzato in IIS 7.0 in modalità integrata. Le impostazioni di configurazione vengono immesse automaticamente nel file Web.config quando il controllo del server Web ReportViewer viene trascinato dalla casella degli strumenti nel Web Form. I gestori HTTP fanno parte del controllo e non possono essere rimossi o sostituiti.

Nota importanteImportante

Per utilizzare IIS 7.0 in modalità integrata, è necessario rimuovere il gestore HTTP in system.web/httpHandlers. In caso contrario, l'applicazione non verrà eseguita e verrà visualizzato un messaggio di errore.

È necessario che il gestore HTTP per la versione IIS desiderata sia specificato nella relativa sezione. Se si rimuove o si modificano le impostazioni di configurazione del gestore HTTP, il controllo del server Web ReportViewer nel Web Form visualizzerà un messaggio di errore che indica che è necessario aggiungere nuovamente il gestore nella relativa sezione nel file web.config. Di seguito sono riportati i gestori HTTP specificati in system.web/httpHandlers e in system.webServer/handlers:

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

Vedere anche

Concetti

Aggiunta e configurazione dei controlli ReportViewer

Distribuzione di rapporti e controlli ReportViewer

Altre risorse

httpHandlers

handler