Partager via


IReportServerConnection2, interface

Fournit les informations de connexion au serveur de rapports en cas d'utilisation du contrôle Web Forms ReportViewer sans état de session.

Espace de noms :  Microsoft.Reporting.WebForms
Assembly :  Microsoft.ReportViewer.WebForms (dans Microsoft.ReportViewer.WebForms.dll)

Syntaxe

'Déclaration
Public Interface IReportServerConnection2 _
    Inherits IReportServerConnection, IReportServerCredentials
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

Le type IReportServerConnection2 expose les membres suivants.

Propriétés

  Nom Description
Propriété publique Cookies Obtient une collection de cookies personnalisés à envoyer au serveur de rapports.
Propriété publique Headers Obtient une collection d'en-têtes personnalisés à envoyer au serveur de rapports.
Propriété publique ImpersonationUser Obtient ou définit le WindowsIdentity de l'utilisateur dont l'identité doit être empruntée lorsque le contrôle ReportViewer se connecte à un serveur de rapports. (Hérité de IReportServerCredentials.)
Propriété publique NetworkCredentials Obtient ou définit les informations d'identification réseau qui sont utilisées pour l'authentification sur le serveur de rapports. (Hérité de IReportServerCredentials.)
Propriété publique ReportServerUrl Renvoie l'URL du serveur de rapports. (Hérité de IReportServerConnection.)
Propriété publique Timeout Obtient le nombre de millisecondes à attendre pour les communications du serveur. (Hérité de IReportServerConnection.)

Début

Méthodes

  Nom Description
Méthode publique GetFormsCredentials Fournit les informations qui seront utilisées pour se connecter au serveur de rapports configuré pour l'authentification par formulaires. (Hérité de IReportServerCredentials.)

Début

Notes

Lorsqu'une implémentation de l'interface IReportServerConnection2 est spécifiée dans les paramètres Web.config, les valeurs des propriétés ReportServerUrl, Timeout, Cookies et Headers sur l'instance ServerReport ne seront pas utilisées.Les valeurs fournies par l'implémentation IReportServerConnection2 seront utilisées à la place.Outre ces propriétés, les informations d'identification fournies par l'implémentation IReportServerConnection2 seront également utilisées.

Pour plus d'informations sur la façon de spécifier des connexions avec le contrôle ReportViewer, consultez Spécification des connexions et des informations d'identification du contrôle serveur Web ReportViewer.

Pour plus d'informations sur le paramètre Web.config ReportViewerServerConnection, consultez Paramètres Web.config pour ReportViewer.

Exemples

L'exemple ci-dessous fournit une implémentation de l'interface IReportServerConnection2 qui récupère les informations d'identification et l'URL du serveur de rapports à partir du fichier Web.config.

Avant d'utiliser cet exemple, cinq paires clé-valeur doivent être ajoutées dans le fichier Web.config de l'application, dans le bloc appSettings : ReportViewerServerConnection, MyReportViewerUser, MyReportViewerPassword, MyReportViewerDomain et MyReportServerUrl, les valeurs correspondant aux nom d'utilisateur, mot de passe et domaine pour la connexion au serveur de rapports, ainsi qu'à l'URL du serveur de rapports.La valeur à affecter à ReportViewerServerConnection doit être le nom d'assembly complet pour l'implémentation de la classe IReportServerConnection2.

Pour plus d'informations sur le paramètre Web.config ReportViewerServerConnection, consultez Paramètres Web.config pour 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

Voir aussi

Référence

Microsoft.Reporting.WebForms, espace de noms

IReportServerCredentials

Autres ressources

Paramètres Web.config pour ReportViewer

Spécification des connexions et des informations d'identification du contrôle serveur Web ReportViewer