Interfaccia IReportServerConnection2

Specifica le informazioni per la connessione al server di rapporti quando il controllo Web Forms di ReportViewer viene utilizzato con lo stato delle sessioni disattivato.

Spazio dei nomi  Microsoft.Reporting.WebForms
Assembly:  Microsoft.ReportViewer.WebForms (in Microsoft.ReportViewer.WebForms.dll)

Sintassi

'Dichiarazione
Public Interface IReportServerConnection2 _
    Inherits IReportServerConnection, IReportServerCredentials
'Utilizzo
Dim instance As IReportServerConnection2
public interface IReportServerConnection2 : IReportServerConnection, 
    IReportServerCredentials
public interface class IReportServerConnection2 : IReportServerConnection, 
    IReportServerCredentials
type IReportServerConnection2 =  
    interface
        interface IReportServerConnection
        interface IReportServerCredentials
    end
public interface IReportServerConnection2 extends IReportServerConnection, IReportServerCredentials

Nel tipo IReportServerConnection2 sono esposti i membri seguenti.

Proprietà

  Nome Descrizione
Proprietà pubblica Cookies Recupera una raccolta di cookie personalizzati da inviare al server di rapporti.
Proprietà pubblica Headers Recupera una raccolta di intestazioni personalizzate da inviare al server di rapporti.
Proprietà pubblica ImpersonationUser Recupera o imposta l'oggetto System.Security.Principal.WindowsIdentity dell'utente da rappresentare quando il controllo ReportViewer si connette a un server di rapporti. Ereditato da IReportServerCredentials.
Proprietà pubblica NetworkCredentials Recupera o imposta le credenziali di rete utilizzate per l'autenticazione con il server di rapporti. Ereditato da IReportServerCredentials.
Proprietà pubblica ReportServerUrl Restituisce l'URL del server di rapporti. Ereditato da IReportServerConnection.
Proprietà pubblica Timeout Recupera il numero di millisecondi che devono trascorrere prima di stabilire la comunicazione con il server. Ereditato da IReportServerConnection.

In alto

Metodi

  Nome Descrizione
Metodo pubblico GetFormsCredentials Specifica le informazioni che saranno utilizzate per la connessione al server di rapporti configurato per l'autenticazione basata su form. Ereditato da IReportServerCredentials.

In alto

Osservazioni

Quando nelle impostazioni Web.config è specificata un'implementazione dell'interfaccia IReportServerConnection2, non saranno utilizzati i valori delle proprietà ReportServerUrl, Timeout, Cookies e Headers dell'istanza ServerReport. Verranno utilizzati i valori specificati dall'implementazione IReportServerConnection2. Oltre a queste proprietà, saranno inoltre utilizzate le informazioni sulle credenziali specificate dall'implementazione IReportServerConnection2.

Per ulteriori informazioni sull'impostazione di connessioni con il controllo ReportViewer, vedere Impostazioni di connessioni e credenziali per il controllo del server Web ReportViewer.

Per ulteriori informazioni sull'impostazione ReportViewerServerConnection in Web.config, vedere Impostazioni di Web.config per ReportViewer.

Esempi

Nell'esempio seguente è illustrata l'implementazione di un'interfaccia IReportServerConnection2 che recupera l'URL del server di rapporti e le informazioni sulle credenziali dal file Web.config.

Prima di utilizzare l'esempio, è necessario aggiungere cinque coppie chiave/valore al file Web.config dell'applicazione nel blocco appSettings: ReportViewerServerConnection, MyReportViewerUser, MyReportViewerPassword, MyReportViewerDomaine MyReportServerUrl, dove i valori corrispondono al nome utente, alla password e al dominio per la connessione al server di rapporti, nonché all'URL del server di rapporti. Il valore ReportViewerServerConnection deve essere impostato sul nome dell'assembly completo relativo all'implementazione della classe IReportServerConnection2.

Per ulteriori informazioni sull'impostazione ReportViewerServerConnection in Web.config, vedere Impostazioni di Web.config per ReportViewer.

public sealed class MyReportServerConnection : IReportServerConnection2
{
    public WindowsIdentity ImpersonationUser
    {
        get
        {
            // Use the default Windows user.  Credentials will be
            // provided by the NetworkCredentials property.
            return null;
        }
    }

    public ICredentials NetworkCredentials
    {
        get
        {
            // Read the user information from the web.config file.  
            // By reading the information on demand instead of 
            // storing it, the credentials will not be stored in 
            // session, reducing the vulnerable surface area to the
            // web.config file, which can be secured with an ACL.

            // User name
            string userName =
                ConfigurationManager.AppSettings
                    ["MyReportViewerUser"];

            if (string.IsNullOrEmpty(userName))
                throw new Exception(
                    "Missing user name from Web.config file");

            // Password
            string password =
                ConfigurationManager.AppSettings
                    ["MyReportViewerPassword"];

            if (string.IsNullOrEmpty(password))
                throw new Exception(
                    "Missing password from Web.config file");

            // Domain
            string domain =
                ConfigurationManager.AppSettings
                    ["MyReportViewerDomain"];

            if (string.IsNullOrEmpty(domain))
                throw new Exception(
                    "Missing domain from Web.config file");

            return new NetworkCredential(userName, password, domain);
        }
    }

    public bool GetFormsCredentials(out Cookie authCookie,
                out string userName, out string password,
                out string authority)
    {
        authCookie = null;
        userName = null;
        password = null;
        authority = null;

        // Not using form credentials
        return false;
    }

    public Uri ReportServerUrl
    {
        get
        {
            string url = 
                ConfigurationManager.AppSettings[
                    "MyReportServerUrl"];

            if (string.IsNullOrEmpty(url))
                throw new Exception(
                    "Missing url from the Web.config file");

            return new Uri(url);
        }
    }

    public int Timeout
    {
        get
        {
            return 60000; // 60 seconds
        }
    }

    public IEnumerable<Cookie> Cookies
    {
        get
        {
            // No custom cookies
            return null;
        }
    }

    public IEnumerable<string> Headers
    {
        get
        {
            // No custom headers
            return null;
        }
    }
}
Public NotInheritable Class MyReportServerConnection
    Implements IReportServerConnection2

    Public ReadOnly Property ImpersonationUser() As WindowsIdentity _
            Implements IReportServerConnection2.ImpersonationUser
        Get

            'Use the default Windows user.  Credentials will be
            'provided by the NetworkCredentials property.
            Return Nothing

        End Get
    End Property

    Public ReadOnly Property NetworkCredentials() As ICredentials _
            Implements IReportServerConnection2.NetworkCredentials
        Get

            'Read the user information from the web.config file.  
            'By reading the information on demand instead of storing 
            'it, the credentials will not be stored in session, 
            'reducing the vulnerable surface area to the web.config 
            'file, which can be secured with an ACL.

            'User name
            Dim userName As String = _
                ConfigurationManager.AppSettings("MyReportViewerUser")

            If (String.IsNullOrEmpty(userName)) Then
                Throw New Exception("Missing user name from web.config file")
            End If

            'Password
            Dim password As String = _
                ConfigurationManager.AppSettings("MyReportViewerPassword")

            If (String.IsNullOrEmpty(password)) Then
                Throw New Exception("Missing password from web.config file")
            End If

            'Domain
            Dim domain As String = _
                ConfigurationManager.AppSettings("MyReportViewerDomain")

            If (String.IsNullOrEmpty(domain)) Then
                Throw New Exception("Missing domain from web.config file")
            End If

            Return New NetworkCredential(userName, password, domain)

        End Get
    End Property

    Public Function GetFormsCredentials(ByRef authCookie As Cookie, _
                                        ByRef userName As String, _
                                        ByRef password As String, _
                                        ByRef authority As String) _
                                        As Boolean _
            Implements IReportServerConnection2.GetFormsCredentials

        authCookie = Nothing
        userName = Nothing
        password = Nothing
        authority = Nothing

        'Not using form credentials
        Return False

    End Function

    Public ReadOnly Property ReportServerUrl() As Uri 
           Implements IReportServerConnection2.ReportServerUrl
        Get
            Dim url As String = ConfigurationManager.AppSettings("MyReportViewerUrl")
            If (String.IsNullOrEmpty(url)) Then
                Throw New Exception("Missing url from the web.config file")
            End If

            Return New Uri(url)

        End Get
    End Property

    Public ReadOnly Property Timeout() As Integer Implements IReportServerConnection2.Timeout
        Get
            Return 60000 '60 seconds
        End Get
    End Property

    Public ReadOnly Property Cookies() As IEnumerable(Of Cookie) Implements IReportServerConnection2.Cookies
        Get
            Return Nothing
        End Get
    End Property

    Public ReadOnly Property Headers() As IEnumerable(Of String) Implements IReportServerConnection2.Headers
        Get
            Return Nothing
        End Get
    End Property

End Class

Vedere anche

Riferimento

Spazio dei nomi Microsoft.Reporting.WebForms

IReportServerCredentials

Altre risorse

Impostazioni di Web.config per ReportViewer

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