次の方法で共有


ReportViewer 用の Web.config 設定

ReportViewer Web サーバー コントロールを使用している場合は、ASP.NET Web.config でアプリケーションを設定し、実行時の ReportViewer を構成できます。このトピックでは、リモート レポート サーバーへの接続、一時ストリームの格納、およびコントロール ユーザー インターフェイスへのカスタム文字列の提供のために使用される Web.config のアプリケーション設定について説明します。また、Web ファーム配置で実行される ReportViewer アプリケーションの <sessionState> および <machineKey> 設定を使用する方法に関する推奨事項を示し、ReportViewer Web サーバー コントロールによって使用される HTTP ハンドラの設定を Web.config の <httpHandlers> セクションで定義する方法について説明します。

ReportViewer コントロール用の <appSettings> 要素の構成

ReportViewer Web サーバー コントロール用のカスタム アプリケーション設定を構成するには、アプリケーションの Web.config ファイルの <appSettings> セクションに次のキーを追加します。これらのキーの値は、固有のインターフェイスを実装する完全修飾クラス名です。

キー 使用元

ReportViewerServerConnection

このキーは、IReportServerConnection インターフェイスを実装するクラスを指定します。このインターフェイスは、セッション状態がオフになっている場合、または接続情報を ASP.NET セッションに格納しない場合に、レポート サーバーの接続情報を提供します。アプリケーションで使用されるすべてのレポートが同じレポート サーバーで処理される場合は、ReportViewerServerConnection キーを使用して Web.config ファイルで接続情報を一度指定する方が、セッションに各 ServerReport オブジェクトの ReportServerUrl プロパティと TimeOut プロパティを格納するよりも効率的です。

ReportViewerTemporaryStorage

このキーは、ITemporaryStorage インターフェイスを実装するクラスを指定します。このインターフェイスは、レポート サーバーが送信する一時ストリームを、メモリに保持する代わりに別の場所に格納するために使用されます。これによって、アプリケーションのスケーラビリティが向上します。

ReportViewerMessages

このキーは、IReportViewerMessages インターフェイスを実装するクラスを指定します。このインターフェイスは、カスタマイズしたユーザー インターフェイス メッセージを提供するために使用されます。

完全修飾クラスの指定

各キーの値は、インターフェイスを実装するクラスと、そのクラスを含むアセンブリの場所です。ASP.NET では、次の構文を使用していくつかの方法でクラスを指定できます。

<add key="MyKeyName" value="MyNamespace.MyClass, Location" />

クラスがアセンブリに実装されている場合、場所はアプリケーションの bin フォルダまたはグローバル アセンブリ キャッシュ (GAC) になります。この場合、キーの値はバージョン、カルチャ、および公開キー トークンの値を含む完全修飾アセンブリ名として指定する必要があります。または、クラスがアプリケーションの APP_CODE フォルダ内のソース コード ファイルに実装されている場合には、そのフォルダを場所として指定する必要があります。

GAC、アプリケーションの bin フォルダ、または APP_CODE フォルダ内の完全修飾クラスを指定する有効な方法の例を次に示します。

<add key="ReportViewerServerConnection" value="MyNamespace.MyClass, MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken= 00000000000000000 "/>

または

<add key="ReportViewerServerConnection" value="MyNamespace.MyClass, MyAssembly"/>

または

<add key="ReportViewerServerConnection" value=" MyNamespace.MyClass, APP_CODE"/>

ReportViewerServerConnection

IReportServerConnection または IReportServerConnection2 インターフェイスを実装してレポート サーバーの接続情報を提供する場合は、Web.config ファイルで ReportViewerServerConnection キーを定義する必要があります。このキーは、IReportServerConnection を実装するカスタム クラスと、そのクラスを含むアセンブリまたはソース ファイルの場所を指定します。

ReportViewerServerConnection キーでクラスを指定する場合は、競合する可能性がある ServerReport オブジェクトのその他のプロパティを設定しないようにしてください。具体的には、ServerReport.TimeoutServerReport.ReportServerUrlServerReport.ReportServerCredentialsServerReport.Cookies、または ServerReport.Headers プロパティは設定しないでください。

次の例に、ReportViewerServerConnection キーの構文を示します。ここでは、アプリケーションの Bin フォルダにある MyAssembly という名前のアセンブリ内の IReportServerConnection2 を実装するクラスを指定しています。

<appSettings>
    <add key="ReportViewerServerConnection" value="MyNamespace.MyRVServerConnectionClass, MyAssembly"/>
</appSettings>

IReportServerConnection を実装するクラスのコード例を確認するには、「ReportViewer Web サーバー コントロールの接続と資格情報の指定」を参照してください。

ReportViewerTemporaryStorage

ITemporaryStorage インターフェイスを実装するオブジェクトを指定するには、ReportViewerTemporaryStorage キーを設定する必要があります。このインターフェイスは、レポート サーバーが送信する一時ストリームを、メモリに保持する代わりに別の場所に格納する場合に実装します。各要求は、新しい要求を開始する前に完了する必要があるので、一度に格納できるのは現在のページのみになります。この設定は、サーバー レポートにのみ使用します。次の例に、ReportViewerTemporaryStorage キーの構文を示します。

<appSettings>
    <add key="ReportViewerTemporaryStorage" value="MyNamespace.MyTemporaryStorageClass, MyAssembly" />
</appSettings>

ReportViewerMessages

ReportViewer コントロールにカスタム文字列を提供するインターフェイスに含まれている IReportViewerMessages を実装するオブジェクトを指定するには、ReportViewerMessages キーを設定する必要があります。このインターフェイスを使用すると、既定以外の言語における文字列のローカライズをサポートできます。次の例に、ReportViewerMessages キーの構文を示します。

<appSettings>
    <add key="ReportViewerMessages" value="MyNamespace.MyRVMessageClass, MyAssembly" />
</appSettings>

ReportViewer コントロール用の <system.web> 要素の構成

アプリケーションの Web.config ファイルでは、<system.web> セクションの設定を定義して実行時のレポート セッション動作を決定できます。また、ReportViewer コントロールはこのセクションを使用して、コントロールが提供する HTTP ハンドラの設定を登録します。使用可能な要素には、<sessionState>、<machineKey>、および <httpHandler> があります。

<sessionState>

sessionState 要素を使用すると、セッション状態をインプロセスで格納するか、オフにするか、アウト プロセス ASP.NET 状態サービスで処理するかを設定できます。

InProc は既定の設定で、これはアプリケーションが 1 台のコンピュータで実行されている場合に使用できます。Web ファームで実行されるアプリケーションでレポートを実行する場合は、この設定を使用しないでください。

ReportViewer コントロールがローカル モードでクライアント レポート定義 (.rdlc) ファイルを処理している場合は、Off を使用しないでください。ローカル モードではセッション状態が必要になります。リモート モードを使用している場合は、セッション状態をオフにできます。セッション状態を無効にする場合は、<appSetting> 要素で ReportViewerServerConnection を必ず指定してください。

その他の <sessionState> モード CustomSQLServer、および StateServer も使用できます。

<machineKey>

Web ファームまたはクラスタに ReportViewer コントロールを配置する場合は、<machineKey> 要素を指定して、ファーム内のすべてのノードが同じプロセス ID を使用するように強制する必要があります。これによって、1 つのコンピュータから保存した表示状態をどのコンピュータでも読み取ることができるようになります。

[!メモ]

<machineKey> 要素を設定して Web ファームでの表示状態の同期をとる方法は、Microsoft .NET Framework 2.0 のマニュアルで推奨されています。Web サービスのネットワーク用に表示状態の検証を構成する方法については、「machineKey 要素 (ASP.NET 設定スキーマ)」を参照してください。

.NET Framework 2.0 では、表示状態の検証は、既定で有効です。検証は、ASP.NET プロセス ID 情報を使用して実行されます。プロセス ID を使用した検証は、ノードごとにプロセス ID が異なるクラスタまたは Web ファームのシナリオでは機能しません。すべてのノードで同じプロセス ID が使用されるようにするには、表示状態の検証をサポートする検証キーを生成し、各ノードがこのキーを使用するように手動で構成します。

  1. 検証キーを生成します。.NET Framework が提供する自動生成機能を使用するか、キーを別の方法で作成します。validationKey 属性を設定する場合、AutoGenerate オプションは使用しないでください。

  2. 暗号化解除キーを生成します。暗号化解除キーには、明示的な値を作成するか、decryptionKey を AutoGenerate に設定します。

  3. Web ファーム内の各ノード用の Web.config ファイルを開き、machineKey 要素を設定します。検証キー、暗号化解除キー、およびデータの検証に使用する暗号化の種類を指定する必要があります。

  4. Web ファームまたはクラスタの配置に含まれているノードごとに、これらの手順を繰り返します。

<httpHandlers>

ReportViewer Web サーバー コントロールには HTTP ハンドラが用意されており、これを使用して、レポートに埋め込まれているかレポート内で参照されている画像を表示し、レポートを別の出力形式にエクスポートし、レポート パラメータでの日付選択に使用するカレンダー コントロールを提供し、レポート セッションを開いたままにすることができます。

HTTP ハンドラの構成設定は、アプリケーションの Web.config ファイルの httpHandlers 要素で指定します。構成設定は、ReportViewer Web サーバー コントロールをツールボックスから Web ページにドラッグしたときに自動的に Web.config ファイルに入力されます。

HTTP ハンドラの構成設定を削除または変更することはできません。Web.config の <httpHandlers> 設定を変更または削除すると、.aspx ページを表示するときに ReportViewer Web サーバー コントロールによって、"レポート ビューア Web コントロール HTTP ハンドラが、アプリケーションの web.config ファイルに登録されていません。" というエラーがスローされます。このエラー メッセージには HTTP ハンドラに必要な構成情報が含まれており、この設定を Web.config ファイルにそのままコピーできます。この文字列は、次の例のようになります (バージョン情報と PublicKeyToken は変わることに注意してください)。

<httpHandlers>
   <add path="Reserved.ReportViewerWebControl.axd" verb="*" 
   type="Microsoft.Reporting.WebForms.HttpHandler, 
   Microsoft.ReportViewer.WebForms, Version=8.0.0.0, 
   Culture=neutral, PublicKeyToken=0000000000000000" validate="false" 
   />
</httpHandlers>

HTTP ハンドラはコントロールの一部です。削除したり、ユーザーが提供するカスタム機能に置き換えたりすることはできません。

参照

概念

ReportViewer コントロールの追加と設定
レポートと ReportViewer コントロールの配置