Azure In-Role Cache 用のセッション状態プロバイダー
重要
Microsoft では、すべての新しい開発で Azure Redis Cache を使用することをお勧めします。 Azure Cache オファリングの選択に関する最新のドキュメントとガイダンスについては、自分に適した Azure Cache オファリングを参照してください。
セッション状態プロバイダーは、ASP.NET アプリケーションのアウトプロセス ストレージ メカニズムです。 このプロバイダーを使用すると、メモリ内またはSQL Server データベースではなく、キャッシュにセッション状態を格納できます。
セッション状態キャッシュのサンプルについては、 セッション状態のキャッシュと出力キャッシュのサンプルに関するページを参照してください。
機能
セッション状態プロバイダーは、過去の ASP.NET セッション状態プロバイダーに対して次の機能強化を行いました。
セッション状態をシリアル化するために NetDataContractSerializer クラスを内部的に使用します。
異なる複数の ASP.NET アプリケーション間でセッション状態を共有できます。
複数のリーダーと 1 つのライターに対して、同じセッション状態のセットへの同時アクセスをサポートします。
キャッシュ クライアント プロパティで圧縮を使用できます。
NetDataContractSerializer クラスをシリアル化に使用することで、より広範囲のシリアル化可能な型がサポートされます。 これにはバイナリのシリアル化可能な型のサポートも含まれます。
プロバイダーは、異なる複数の ASP.NET アプリケーションで同一のセッション状態データを読み書きする機能をサポートしています。 たとえば、開発者が 2 つの異なる ASP.NET サイト (/contoso と /adventureworks) を使用しているとします。 各 Web アプリケーションで、セッション状態プロバイダーをキャッシュ クラスター内の同じセッション状態ストアを参照するように構成できます。 その結果、指定されたすべてのセッション ID に対して両方のアプリケーションが同じセッション データを読み書きするようになります。
セッション状態プロバイダーは、複数のリーダーと単一ライター向けに同じセッション状態セットへの同時アクセスをサポートします。 この場合、リーダーは、ReadOnly セッション状態を使用するとマークされているページとして定義されます。 AJAX のコールバックを広範囲に使用するアプリケーションでは、アプリケーションのセッション状態アクセス パターンの大部分がセッション状態への読み取り専用アクセスしか必要としない場合、サーバー側での要求キュー処理は発生しません。
ASP.NET プロジェクトにセッション状態プロバイダーを追加するには
最初に、ASP.NET プロバイダーと共に使用するキャッシュを構成します。 併置トポロジまたは専用ロールを使用してキャッシュをホストできます。
NuGetを使用して、Visual Studioの ASP.NET プロジェクトにキャッシュ サポートを追加します。 手順については、「方法: Azure In-Role Cache を使用するVisual Studioを準備する」を参照してください。
重要
これらの手順を実行するには、最新の NuGet Package Manager (Version 2.1.31002.9028 以降) が必要です。 最新のNuGet パッケージ マネージャーをインストールするには、https://go.microsoft.com/fwlink/?LinkId=240311
セッション状態キャッシュを構成する既存の sessionState 要素を削除します。 NuGet パッケージによって追加されたコメント付き sessionState セクションは削除しないでください。
web.config ファイルで、 sessionState セクションのコメントを解除します。
<!-- Azure Caching session state provider --> <sessionState mode="Custom" customProvider="AFCacheSessionStateProvider"> <providers> <add name="AFCacheSessionStateProvider" type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache" cacheName="default" dataCacheClientName="default" applicationName="AFCacheSessionState"/> </providers> </sessionState>
次の一覧に、出力キャッシュプロバイダーに影響を与えるオプションの設定変更を示します。
add 要素の cacheName 属性を使用して、対象となる名前付きキャッシュを変更します。
add 要素の dataCacheClientName 属性を使用して、キャッシュ クライアント設定のソースを変更します。 この属性を、web.config ファイル内の既存の dataCacheClient セクションの名前に設定します。
関連付けられている dataCacheClient セクションの設定を変更して、キャッシュ クライアントの動作を変更します。 たとえば、 isCompressionEnabled 属性を使用して圧縮を有効にします。
<dataCacheClient name="default" isCompressionEnabled="true">
使用可能な構成オプションの一覧については、「インロール キャッシュ クライアント構成設定 (Web.config)」を参照してください。 キャッシュ用の ASP.NET プロバイダーでは、バイナリまたはカスタムのシリアル化の種類はサポートされていないことに注意してください。 これらのシリアライザーをセッション状態に使用すると、次の例外が発生します。アセンブリ 'Microsoft.Web.DistributedCache、Version=101.0.0.0.0、Culture=neutral、PublicKeyToken=31bf3856ad364e35' の型 'Microsoft.Web.DistributedCache.SerializableSessionStateStoreData' はシリアル化可能としてマークされません"
セッション状態プロバイダーの設定を変更します。 使用可能な構成オプションの一覧については、「Azure In-Role Cache のセッション状態プロバイダー構成設定 ASP.NET」を参照してください。