Share via


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 report 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 report quando lo stato della sessione è disattivato o quando non si desidera archiviare informazioni di connessione nella sessione ASP.NET. Se tutti i report utilizzati nell'applicazione sono elaborati sullo stesso server di report,è più efficace utilizzare la chiave ReportViewerServerConnection per specificare una sola volta le informazioni di connessione nel file Web.config, invece che archiviare le proprietà ReportServerUrl e TimeOut in ogni oggetto ServerReport della sessione.

ReportViewerTemporaryStorage

Questa chiave specifica una classe che implementa l'interfaccia ITemporaryStorage. Questa interfaccia è utilizzata per archiviare i flussi temporanei inviati dal server di report 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.

Impostazione 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, lingua 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 report 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 del report 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 report 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 report 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 report 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 report 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 disattiva 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.

NoteNota

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. Per ulteriori informazioni sulla configurazione della convalida dello stato di visualizzazione per una rete di servizi Web, vedere Elemento machineKey (schema delle impostazioni ASP.NET).

In .NET Framework 2.0 la convalida dello stato di visualizzazione è attivata 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 crittografia 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 del server Web ReportViewer include un gestore HTTP che consente di visualizzare immagini incorporate o con riferimenti in un report, esportare i report in diversi formati di output, utilizzare il controllo calendario per selezionare la data per un parametro del report, nonché tenere aperta la sessione.

Le impostazioni di configurazione per il gestore HTTP sono specificate nell'elemento httpHandlers del file Web.config dell'applicazione. Le impostazioni di configurazione sono immesse automaticamente nel file Web.config quando il controllo del server Web ReportViewer viene trascinato dalla casella degli strumenti nella pagina Web.

Non è possibile rimuovere o modificare le impostazioni di configurazione del gestore HTTP. Se si modificano o eliminano le impostazioni <httpHandlers> in Web.config, alla visualizzazione della pagina .aspx il controllo del server Web ReportViewer restituirà l'errore seguente: "Il gestore HTTP del controllo Web ReportViewer non è stato registrato nel file Web.config dell'applicazione". Nel messaggio di errore sono incluse le informazioni di configurazione richieste dal gestore http. È possibile copiare testualmente le impostazioni nel file Web.config. La stringa risulterà simile all'esempio seguente, anche se le informazioni sulla versione e su PublicKeyToken saranno diverse.

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

Il gestore HTTP è incluso nel controllo e non può essere rimosso o sostituito con funzionalità personalizzate.

Vedere anche

Concetti

Aggiunta e configurazione dei controlli ReportViewer
Distribuzione di report e controlli ReportViewer