Condividi tramite


Impostazioni di connessioni e credenziali per il controllo del server Web ReportViewer

Per specificare una connessione dal controllo ReportViewer al server di rapporti è utile conoscere le condizioni in cui vengono eseguite le connessioni.

  • Quando all'avvio viene caricata la pagina Web che contiene il controllo ReportViewer, il controllo si connette al server di rapporti per stabilire la sessione, acquisire o impostare le proprietà dei parametri del rapporto e recuperare l'elenco di estensioni per il rendering disponibili sul server.

  • Nel caso in cui l'impostazione del controllo in esecuzione sia AsyncRendering=true, il formato HTML del rapporto è recuperato in modo asincrono da un oggetto IFrame dopo il rendering della pagina.

  • Se il rapporto fa riferimento a un'immagine esterna, il controllo ReportViewer recupera le immagini effettuando richieste separate tramite il gestore HTTP ReportViewer, in cui ogni richiesta è eseguita con la propria connessione.

  • Se dopo il rendering si esporta un rapporto visualizzabile in un formato diverso possono verificarsi connessioni aggiuntive.Una richiesta di esportazione è inviata dal browser al server di rapporti tramite una connessione separata.

Il successo di tutte le operazioni varia a seconda che il controllo ReportViewer disponga di informazioni di connessione valide al server di rapporti.La modalità con cui vengono specificate le informazioni sulla connessione varia a seconda di fattori quali, ad esempio, l'utilizzo dell'autenticazione basata su form, dell'autenticazione di Windows, delle credenziali dell'utente corrente o della sessione ASP.NET.

Modalità di impostazione delle connessioni

Per eseguire la connessione al server è possibile impostare le proprietà dell'oggetto ServerReport o implementare le interfacce che impostano la connessione e specificare l'implementazione nel file Web.config.Il controllo ReportViewer legge sempre in primo luogo il file Web.config e utilizza i valori di connessione eventualmente specificati.

Se lo stato della sessione è abilitato, è possibile scegliere se impostare le proprietà dell'oggetto ServerReport o specificare informazioni di connessione nel file Web.config.Se le informazioni di connessione vengono specificate nel file Web.config, non impostare le proprietà dell'oggetto ServerReport.

Se lo stato della sessione è disabilitato, è necessario implementare IReportServerConnection o IReportServerConnection2 e specificare l'implementazione nel file Web.config.

Nota

È necessario che l'assegnazione di ruolo per l'account utente con il quale è eseguita la connessione sul server di rapporti sia valida.Per creare un set completo di autorizzazioni sono utilizzate assegnazioni di ruolo a livello di sistema e di elemento.Se non si ha dimestichezza con le assegnazioni di ruolo del server di rapporti, è possibile seguire un'esercitazione per apprendere i principi dell'assegnazione di ruolo.Per ulteriori informazioni, vedere Esercitazione: Impostazione delle autorizzazioni in Reporting Services su MSDN.

Aa983458.collapse_all(it-it,VS.140).gifImpostazione delle proprietà dell'oggetto ServerReport

È possibile impostare l'URL e le proprietà di timeout del server di rapporti nell'oggetto ServerReport quando in fase di progettazione si trascina il controllo su un form Web.

Per impostazione predefinita, il controllo del server Web ReportViewer si connette al server di rapporti come utente del thread ASP.NET.

Per eseguire la connessione come utente diverso, (ad esempio, se si desidera che tutti gli utenti si connettano a un server di rapporti tramite un solo account utente), implementare IReportServerCredentials su un oggetto serializzabile e passare un'istanza di tale oggetto a ReportViewer.ServerReport.ReportServerCredentials.Poiché il controllo ReportViewer può connettersi al server di rapporti al completamento dell'elaborazione della pagina ASP.NET, l'oggetto deve essere serializzabile per l'archiviazione se la sessione ASP.NET è archiviata fuori del processo (ad esempio, in un database di SQL Server).

L'impostazione diretta della proprietà ReportViewer.ServerReport.ReportServerCredentials presenta due svantaggi:

  • La sessione ASP.NET deve essere abilitata.

  • La sessione ASP.NET può divenire inutilmente grande perché il controllo ReportViewer posiziona un'istanza dell'oggetto della sessione per ogni utente che visualizza la pagina.

È possibile ovviare a questi svantaggi specificando un'implementazione di IReportServerConnection2 nel file Web.config.

Per indicazioni sull'impostazione delle credenziali con lo stato della sessione disabilitato, vedere Linee guida per l'archiviazione delle credenziali nel caso in cui la sessione ASP.NET sia disabilitata in questo argomento.

Aa983458.collapse_all(it-it,VS.140).gifImpostazione di una connessione al server di rapporti in Web.config

In caso di implementazione di IReportServerConnection o IReportServerConnection2, è necessario specificare l'implementazione nel file Web.config dell'applicazione.Il file Web.config fornisce il tipo di oggetto contenente le informazioni sulla connessione e sulle credenziali.

Nota

È necessario specificare un'implementazione di IReportServerConnection2 o IReportServerConnection e non IReportServerCredentials nel file Web.config.IReportServerConnection2 deriva da IReportServerCredentials e consente di aggiungere altre proprietà per l'impostazione di un URL del server di report, un valore di timeout ed eventuali cookie personalizzati o intestazioni HTTP che si desidera utilizzare.

Sebbene IReportServerConnection2 sia necessario se la sessione ASP.NET è disabilitata, è possibile utilizzarlo con sessioni ASP.NET attive per evitare di archiviare oggetti nella sessione.Per ulteriori informazioni e un esempio di codice, vedere l'argomento di riferimento alla programmazione per IReportServerConnection2.Per ulteriori informazioni sull'aggiunta di chiavi in Web.config, vedere Impostazioni di Web.config per ReportViewer.

Nella tabella seguente sono riepilogate le interfacce che forniscono informazioni sulla connessione e le credenziali.

Interfaccia

Descrizione

IReportServerCredentials

È possibile utilizzare questa interfaccia per specificare le credenziali con cui l'oggetto ServerReport si connette al server di rapporti se non si desidera effettuare la connessione come utente corrente.

Per impostazione predefinita il controllo ReportViewer si connette al server di rapporti come utente del thread ASP.NET.

È possibile specificare un utente diverso impostando ReportViewer.ServerReport.ReportServerCredentials su un'istanza di implementazione personale di IReportServerCredentials.

IReportServerConnection

Questa interfaccia eredita da IReportServerCredentials e fornisce ulteriori membri per l'impostazione dell'URL del server di rapporti e delle proprietà di timeout.

IReportServerConnection2

Questa interfaccia eredita da IReportServerConnection e fornisce membri aggiuntivi per l'impostazione di cookie o intestazioni personalizzati, utili in caso di utilizzo di un solo prodotto per l'accesso al server di rapporti.

Aa983458.collapse_all(it-it,VS.140).gifLinee guida per l'archiviazione delle credenziali nel caso in cui la sessione ASP.NET sia disabilitata

In caso di implementazione di IReportServerConnection2, non archiviare le credenziali utente nella classe.Se le credenziali vengono archiviate in un oggetto serializzabile, il nome utente e la password verranno serializzati nella sessione ASP.NET e archiviati in un database di SQL Server o di un altro server di stato.Sebbene la serializzazione delle credenziali non rappresenti necessariamente un rischio per la sicurezza, aumenta la superficie di attacco perché archivia le credenziali come dati di sessione.

Di seguito sono riportati gli approcci di esempio per evitare di archiviare le credenziali insieme agli altri dati della sessione:

  • Leggere le credenziali archiviate da un file di configurazione o da altri archivi di configurazione.Per ulteriori informazioni e un esempio di codice, vedere l'argomento di riferimento alla programmazione per IReportServerCredentials.

  • Leggere un cookie di HTTP dalla richiesta ASP.NET per fornire credenziali diverse in base al client.

Nota

Sebbene sia possibile scegliere la modalità di archiviazione delle credenziali esternamente alla classe, è necessario accertarsi che per richieste successive nella sessione del rapporto siano restituite le stesse credenziali.

Vedere anche

Riferimenti

IReportServerCredentials

IReportServerConnection2

Concetti

Impostazioni di Web.config per ReportViewer

Configurazione di ReportViewer per il rendering asincrono

Considerazioni sulla distribuzione di rapporti del server

Configurazione di ReportViewer per l'elaborazione remota

Aggiunta e configurazione dei controlli ReportViewer