Esporta (0) Stampa
Espandi tutto

Attività di sviluppo con il servizio di report SQL (report SQL di Azure)

Aggiornamento: maggio 2014

ImportantImportante

In questo articolo vengono fornite le informazioni introduttive per gli sviluppatori di applicazioni che integrano report ospitati da nelle proprie applicazioni nonché sviluppano strumenti di gestione per i server di report .

I report distribuiti nei server di report possono essere visualizzati nelle applicazioni Windows Forms o ASP.NET mediante il controllo ReportViewer di Visual Studio in modo analogo ai report distribuiti nei server di report (SSRS) locali. Allo stesso modo, con vengono esposti gli endpoint SOAP che consento la gestione a livello di programmazione del server di report.

Rivedere gli argomenti seguenti per i requisiti, le linee guida, la compatibilità e le funzionalità non supportate:

Torna all'inizio

In viene utilizzata l'autenticazione basata su cookie. Ciascun cookie scade dopo un'ora. Il server di report invia un nuovo cookie al client ogni mezz'ora. Quando tramite le applicazioni viene effettuato l'accesso a un server di report , i nuovi cookie inviati dal server devono essere salvati in modo esplicito e restituiti con richieste successive mediante il codice client.

Poiché con viene implementata un'estensione di autenticazione personalizzata per fornire un'interfaccia di autenticazione basata su form, è necessario consentirne l'utilizzo durante la programmazione sul server di report. Questa estensione personalizzata funziona nel modo descritto in Panoramica sulle estensioni di sicurezza (SQL Server 2008 R2 Reporting Services). In breve, è necessario effettuare le operazioni seguenti:

  1. Fornire le credenziali di nel modo supportato dall'estensione di autenticazione basata su form.

  2. Salvare il cookie di autenticazione dal tentativo di autenticazione con il server di report.

Per i report di esempio sviluppati in in cui vengono utilizzati i database di , vedere la pagina relativa agli esempi del servizio di report SQL.

Torna all'inizio

Con i controlli ReportViewer è possibile gestire il cookie di autenticazione semplificando le attività dell'utente. Per visualizzare i report distribuiti in un server di report nei controlli ReportViewer, fornire l'URL del server di report e il percorso del report come per un qualsiasi report di server e implementare l'interfaccia IReportServerCredentials, quindi utilizzarla in ServerReport.ReportServerCredentials.

Nell'esempio seguente viene illustrato come implementare e utilizzare IReportServerCredentials per accedere ai report di :


/// <summary>
/// Implementation of IReportServerCredentials to supply forms credentials to SQL Reporting using GetFormsCredentials() 
/// </summary>
public class ReportServerCredentials : IReportServerCredentials
{
    public ReportServerCredentials()
    {
    }

    public WindowsIdentity ImpersonationUser
    {
        get
        {
            return null;
        }
    }

    public ICredentials NetworkCredentials
    {
        get
        {
            return null;
        }
    }

    public bool GetFormsCredentials(out Cookie authCookie, out string user, out string password, out string authority)
    {
        authCookie = null;
        user = ConfigurationManager.AppSettings["USERNAME"];
        password = ConfigurationManager.AppSettings["PASSWORD"];
        authority = ConfigurationManager.AppSettings["SERVER_NAME"];
        return true;
    }
}

Specificare quindi nel file Web.config o App.config le impostazioni dell'applicazione nella sezione <appSettings>. Nell'esempio seguente prendere in considerazione la sostituzione dei valori per SERVER_NAME, USERNAME, PASSWORD e REPORT_PATH con i valori appropriati del server di report .

<appSettings>
  <add key="SERVER_NAME" value="<INSTANCE_NAME>.report.int.mscds.com" />
  <add key="USERNAME" value="<USERNAME>"/>
  <add key="PASSWORD" value="<PASSWORD>"/>
  <add key="REPORT_PATH" value="<REPORT_PATH>"/>
</appSettings>

Nell'esempio seguente viene illustrato come utilizzare IReportServerCredentials per accedere ai report di :

public partial class Default : System.Web.UI.Page
{
    Microsoft.Reporting.WebForms.ReportViewer ReportViewer1 = new ReportViewer();
    protected void Page_Init(object sender, EventArgs e)
    {
         ReportViewer1.ServerReport.ReportServerUrl = new Uri(String.Format("https://{0}/reportserver", ConfigurationManager.AppSettings["SERVER_NAME"]));
         ReportViewer1.ServerReport.ReportPath = ConfigurationManager.AppSettings["REPORT_PATH"];
         ReportViewer1.ServerReport.ReportServerCredentials = new ReportServerCredentials();
    }
}

Per ulteriori informazioni sull'interfaccia IReportServerCredentials, vedere l'argomento di riferimento dell'API corrispondente in Riferimento alla programmazione dei controlli ReportViewer in MSDN. Per le applicazioni Windows Forms, utilizzare Spazio dei nomi Microsoft.Reporting.WinForms. Per le applicazioni ASP.NET, utilizzare Spazio dei nomi Microsoft.Reporting.WebForms.

Vedere Considerazioni relative alla sicurezza per informazioni su come proteggere i dati sensibili quali URL del server di report, nome utente e password.

Torna all'inizio

Con l'API SOAP di vengono forniti diversi endpoint del servizio Web per lo sviluppo di soluzioni di creazione di report personalizzate. La funzionalità di gestione viene esposta tramite gli endpoint relativi allo spazio dei nomi ReportService2005 e allo spazio dei nomi ReportService2010. Per l'elenco delle API SOAP non supportate nel servizio di report SQL, vedere Linee guida e limitazioni relative al servizio di report SQL di Azure.

Per l'accesso all'endpoint di gestione SOAP viene utilizzato il metodo LogonUser() dell'endpoint per l'autenticazione con l'endpoint. È necessario quindi salvare il cookie di autenticazione restituito dalla risposta HTTP e includerlo in ciascuna richiesta dell'operazione successiva. Il modo più semplice per eseguire questa operazione consiste del creare una nuova istanza di CookieContainer e assegnarla alla proprietà CookieContainer della classe proxy prima di chiamare LogonUser().

  1. Nel browser passare al percorso dell'endpoint, Esempio: https://<INSTANCE_NAME>.report.int.mscds.com/ReportServer/reportservice2010.asmx

  2. Digitare il nome utente e la password, quindi fare clic su Accedi. Nel browser verrà visualizzato un file WSDL.

  3. Scaricare il file WSDL.

  4. Aprire il prompt dei comandi di Visual Studio ed eseguire il comando wsdl.exe per generare la classe proxy, Esempio: wsdl /language:CS /n:"ReportServices2010" <WSDL_FILE_PATH>

  5. In Visual Studio aggiungere il file con estensione CS generato al progetto.

  1. Nel codice seguente viene illustrato come eseguire l'autenticazione e l'autorizzazione con l'endpoint di gestione ReportingServices2010 e come effettuare l'operazione ReportingService2010.ListChildren(). Si noti che la proprietà CookieContainer viene impostata su una nuova istanza della classe CookieContainer prima di eseguire il metodo LogonUser(). In questo modo si garantisce che il cookie di autenticazione restituito dalla risposta Web di LogonUser() venga salvato e utilizzato nelle successive chiamate al servizio Web.

    ReportingService2010 rs = new ReportingService2010();
    rs.Url = String.Format("https://{0}:443/ReportServer/ReportService2010.asmx", ConfigurationManager.AppSettings["SERVER_NAME"]);
    rs.CookieContainer = new CookieContainer();
    rs.LogonUser(ConfigurationManager.AppSettings["USERNAME"], ConfigurationManager.AppSettings["PASSWORD"], ConfigurationManager.AppSettings["SERVER_NAME"]);
    
    CatalogItem[] items = rs.ListChildren("/", true);
    
  2. Specificare quindi nel file Web.config o App.config le impostazioni dell'applicazione nella sezione <appSettings>. Nell'esempio seguente prendere in considerazione la sostituzione dei valori per SERVER_NAME, USERNAME e PASSWORD con i valori appropriati del server di report .

    <appSettings>
      <add key="SERVER_NAME" value="<INSTANCE_NAME>.report.int.mscds.com" />
      <add key="USERNAME" value="<USERNAME>"/>
      <add key="PASSWORD" value="<PASSWORD>"/>
    </appSettings>
    

Vedere Considerazioni relative alla sicurezza per informazioni su come proteggere i dati sensibili quali URL del server di report, nome utente e password.

Torna all'inizio

Le stringhe quali l'URL del server di report, il nome utente e la password sono informazioni protette e devono essere archiviate nella sezione <appSettings> del file Web.config o App.config dell'applicazione. È consigliabile crittografare tali dati nel file di configurazione. Nei collegamenti seguenti, suddivisi in quattro parti, viene illustrato come crittografare i dati nella sezione <connectionStrings>. Gli stessi passaggi sono validi per la sezione <appSettings>.

Torna all'inizio

Vedere anche

Mostra:
© 2014 Microsoft