Compartir a través de


IReportServerConnection2 (Interfaz)

Proporciona información de conexión del servidor de informes cuando se usa el control de formularios Web ReportViewer sin estado de sesión.

Espacio de nombres:  Microsoft.Reporting.WebForms
Ensamblado:  Microsoft.ReportViewer.WebForms (en Microsoft.ReportViewer.WebForms.dll)

Sintaxis

'Declaración
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

El tipo IReportServerConnection2 expone los siguientes miembros.

Propiedades

  Nombre Descripción
Propiedad pública Cookies Obtiene una colección de cookies personalizadas que deben enviarse al servidor de informes.
Propiedad pública Headers Obtiene una colección de encabezados personalizados que deben enviarse al servidor de informes.
Propiedad pública ImpersonationUser Obtiene o establece el objeto WindowsIdentity del usuario que se suplantará cuando el control ReportViewer se conecte con un servidor de informes. (Se hereda de IReportServerCredentials).
Propiedad pública NetworkCredentials Obtiene o establece las credenciales de red utilizadas para la autenticación con el servidor de informes. (Se hereda de IReportServerCredentials).
Propiedad pública ReportServerUrl Devuelve la dirección URL del servidor de informes. (Se hereda de IReportServerConnection).
Propiedad pública Timeout Obtiene el número de milisegundos de espera en las comunicaciones del servidor. (Se hereda de IReportServerConnection).

Arriba

Métodos

  Nombre Descripción
Método público GetFormsCredentials Proporciona información que se utilizará para conectarse con el servidor de informes que está configurado para la autenticación de formularios. (Se hereda de IReportServerCredentials).

Arriba

Comentarios

Cuando se especifica una implementación de la interfaz IReportServerConnection2 en la configuración de web.config, no se utilizarán los valores de las propiedades ReportServerUrl, Timeout, Cookies y Headers de la instancia de ServerReport.En su lugar se utilizarán los valores que proporciona la implementación IReportServerConnection2.Además de estas propiedades, también se utilizará la información de credenciales proporcionada por la implementación de IReportServerConnection2.

Para obtener más información sobre cómo especificar conexiones con el control ReportViewer, vea Especificar las conexiones y las credenciales del control de servidor web ReportViewer.

Para obtener más información sobre la configuración de ReportViewerServerConnection en web.config, vea Configuración de web.config para ReportViewer.

Ejemplos

En el ejemplo siguiente se proporciona una implementación de la interfaz IReportServerConnection2 que recupera la dirección URL del servidor de informes y la información de credenciales del archivo web.config.

Antes de utilizar el ejemplo, es preciso agregar cinco pares clave-valor al archivo web.config de la aplicación en el bloque appSettings: ReportViewerServerConnection, MyReportViewerUser, MyReportViewerPassword, MyReportViewerDomain y MyReportServerUrl, cuyos valores corresponden al nombre de usuario, la contraseña y el dominio para la conexión con el servidor de informes, así como la dirección URL del servidor de informes.El valor de ReportViewerServerConnection debe establecerse en el nombre completo del ensamblado para la implementación de la clase IReportServerConnection2.

Para obtener más información sobre la configuración de ReportViewerServerConnection en web.config, vea Configuración de web.config para 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

Vea también

Referencia

Microsoft.Reporting.WebForms (Espacio de nombres)

IReportServerCredentials

Otros recursos

Configuración de web.config para ReportViewer

Especificar las conexiones y las credenciales del control de servidor web ReportViewer