次の方法で共有


IReportServerConnection2 インターフェイス

ReportViewer Web フォーム コントロールをセッション状態なしで使用するときに、レポート サーバーの接続情報を提供します。

名前空間:  Microsoft.Reporting.WebForms
アセンブリ:  Microsoft.ReportViewer.WebForms (Microsoft.ReportViewer.WebForms.dll)

構文

'宣言
Public Interface IReportServerConnection2 _
    Inherits IReportServerConnection, IReportServerCredentials
'使用
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

IReportServerConnection2 型は、以下のメンバーを公開しています。

プロパティ

  名前 説明
パブリック プロパティ Cookies レポート サーバーに送信するカスタム Cookie のコレクションを取得します。
パブリック プロパティ Headers レポート サーバーに送信するカスタム ヘッダーのコレクションを取得します。
パブリック プロパティ ImpersonationUser ReportViewer コントロールがレポート サーバーに接続するときに借用するユーザーの System.Security.Principal.WindowsIdentity を取得または設定します。 (IReportServerCredentials から継承されています。)
パブリック プロパティ NetworkCredentials レポート サーバーでの認証に使用されるネットワーク資格情報を取得または設定します。 (IReportServerCredentials から継承されています。)
パブリック プロパティ ReportServerUrl レポート サーバーの URL を返します。 (IReportServerConnection から継承されています。)
パブリック プロパティ Timeout サーバーの通信を待機するミリ秒数を取得します。 (IReportServerConnection から継承されています。)

Top

メソッド

  名前 説明
パブリック メソッド GetFormsCredentials フォーム認証用に構成されているレポート サーバーへの接続に使用される情報を提供します。 (IReportServerCredentials から継承されています。)

Top

説明

IReportServerConnection2 インターフェイスの実装を Web.config の設定で指定している場合、ServerReport インスタンスの ReportServerUrlTimeoutCookies、および Headers プロパティは使用されません。代わりに、IReportServerConnection2 の実装で指定された値が使用されます。これらのプロパティに加えて、IReportServerConnection2 の実装で指定された資格情報も使用されます。

ReportViewer コントロールで接続を指定する方法の詳細については、「ReportViewer Web サーバー コントロールの接続と資格情報の指定」を参照してください。

Web.config の ReportViewerServerConnection 設定の詳細については、「ReportViewer 用の Web.config 設定」を参照してください。

使用例

次の例は、レポート サーバーの URL および資格情報を Web.config ファイルから取得する IReportServerConnection2 インターフェイスの実装を示しています。

この例を使用する前に、アプリケーションの Web.config ファイルの appSettings ブロックに ReportViewerServerConnection、MyReportViewerUser、MyReportViewerPassword、MyReportViewerDomain、および MyReportServerUrl の 5 つのキーと値のペアを追加する必要があります。これらの値は、レポート サーバーへの接続に使用されるユーザー名、パスワード、およびドメインとレポート サーバーの URL に対応します。ReportViewerServerConnection 値は、IReportServerConnection2 クラスの実装の完全修飾アセンブリ名に設定する必要があります。

Web.config の ReportViewerServerConnection 設定の詳細については、「ReportViewer 用の Web.config 設定」を参照してください。

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

関連項目

参照

Microsoft.Reporting.WebForms 名前空間

IReportServerCredentials

その他の技術情報

ReportViewer 用の Web.config 設定

ReportViewer Web サーバー コントロールの接続と資格情報の指定