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 セッションに格納しない場合に、レポート サーバーの接続情報を提供します。 また、IReportServerConnection2 インターフェイスを実装するクラスを指定できます。これにより、クッキーとカスタム ヘッダーを指定できます。 |
ReportViewerTemporaryStorage |
このキーは、ITemporaryStorage インターフェイスを実装するクラスを指定します。このインターフェイスは、レポート サーバーが送信する一時ストリームを、メモリに保持する代わりに別の場所に格納するために使用されます。これによって、アプリケーションのスケーラビリティが向上します。 |
ReportViewerMessages |
このキーは、IReportViewerMessages インターフェイスを実装するクラスを指定します。このインターフェイスは、カスタマイズしたユーザー インターフェイス メッセージを提供するために使用されます。 Visual Studio 2010 以降では、ReportViewer コントロールに新しいインターフェイス [T:Microsoft.Reporting.WebForms.]IReportViewerMessages3 が追加されました。ReportViewer コントロールが提供するユーザー インターフェイス メッセージをすべて使用するには、ここで IReportViewerMessages3 インターフェイスを実装するクラスを指定します。 |
完全修飾クラスの指定
各キーの値は、インターフェイスを実装するクラスと、そのクラスを含むアセンブリの場所です。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.Timeout、ServerReport.ReportServerUrl、ServerReport.ReportServerCredentials、ServerReport.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> モード Custom、SQLServer、および 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 が使用されるようにするには、表示状態の検証をサポートする検証キーを生成し、各ノードがこのキーを使用するように手動で構成します。
検証キーを生成します。.NET Framework が提供する自動生成機能を使用するか、キーを別の方法で作成します。validationKey 属性を設定する場合、AutoGenerate オプションは使用しないでください。
暗号化解除キーを生成します。暗号化解除キーには、明示的な値を作成するか、decryptionKey を AutoGenerate に設定します。
Web ファーム内の各ノード用の Web.config ファイルを開き、machineKey 要素を設定します。検証キー、暗号化解除キー、およびデータの検証に使用する暗号化の種類を指定する必要があります。
Web ファームまたはクラスターの配置に含まれているノードごとに、これらの手順を繰り返します。
<httpHandlers>
ReportViewer Web サーバー コントロールには HTTP ハンドラーが用意されており、これを使用して、レポートに埋め込まれているかレポート内で参照されている画像を取得し、レポートを別の出力形式にエクスポートし、レポート パラメーターでの日付選択に使用するカレンダー コントロールを提供し、レポート セッションを開いたままで維持し、ReportViewer コントロールでクライアント側のスクリプト機能をサポートすることができます。
HTTP ハンドラーの構成設定は、アプリケーションの Web.config ファイルの system.web/httpHandlers 要素と system.webServer/handlers要素で指定します。system.web/httpHandler に指定されたハンドラーがクラシック モードのインターネット インフォメーション サービス (IIS) 6.0 または IIS 7.0 で使用されるのに対して、system.webServer/handlers に指定されたハンドラーは統合モードの IIS 7.0 で使用されます。構成設定は、ReportViewer Web サーバー コントロールをツールボックスから Web フォームにドラッグしたときに自動的に Web.config ファイルに入力されます。HTTP ハンドラーはコントロールの一部であるため、削除したり置換したりすることはできません。
重要
IIS 7.0 を統合モードで使用するには、system.web/httpHandlers の HTTP ヘッダーを削除する必要があります。これを行わないと、IIS でアプリケーションが実行されず、代わりにエラー メッセージが表示されます。
各セクションに IIS のバージョンを適用する HTTP ハンドラーを保持する必要があります。HTTP ハンドラーの構成設定を削除または変更すると、Web フォームの ReportViewer Web サーバー コントロールに、web.config ファイルの各セクションに構成設定を追加し直すように通知するエラー メッセージが表示されます。system.web/httpHandlers と system.webServer/handlers の両方の HTTP ハンドラーは、次のように重複しています。
<system.web>
<httpHandlers>
<add path="Reserved.ReportViewerWebControl.axd" verb="*"
type="Microsoft.Reporting.WebForms.HttpHandler,
Microsoft.ReportViewer.WebForms, Version=10.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false"
/>
</httpHandlers>
</system.web>
<system.webServer>
<handlers>
<add name="ReportViewerWebControlHandler"
preCondition="integratedMode"
verb="*" path="Reserved.ReportViewerWebControl.axd"
type="Microsoft.Reporting.WebForms.HttpHandler,
Microsoft.ReportViewer.WebForms, Version=10.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
/>
</handlers>
</system.webServer>
参照
関連項目
httpHandlers 要素 (ASP.NET 設定スキーマ)