次の方法で共有


Azure Managed Cache Service のセッション状態プロバイダー

重要

Microsoft では、すべての新しい開発で Azure Redis Cache を使用することをお勧めします。 Azure Cache オファリングの選択に関する最新のドキュメントとガイダンスについては、「自分に適した Azure Cache オファリング」を参照してください。

Microsoft Azure キャッシュ セッション状態プロバイダーは、ASP.NET アプリケーションのアウトプロセス ストレージ メカニズムです。 このプロバイダーを使用すると、メモリ内のデータベースや SQL Server データベースではなくキャッシュにセッションの状態を保存できます。

セッション状態のキャッシュのサンプルについては、「 キャッシュ セッション状態と出力キャッシュのサンプル」を参照してください。

機能

Microsoft Azure キャッシュ セッション状態プロバイダーは、過去の ASP.NET セッション状態プロバイダーに対して次の機能強化を行いました。

  • セッション状態をシリアル化するために NetDataContractSerializer クラスを内部的に使用します。

  • 異なる複数の ASP.NET アプリケーション間でセッション状態を共有できます。

  • 複数のリーダーと 1 つのライターに対して、同じセッション状態セットへの同時アクセスをサポートします。

  • キャッシュ クライアント プロパティで圧縮を使用できます。

NetDataContractSerializer クラスをシリアル化に使用することで、より広範囲のシリアル化可能な型がサポートされます。 これにはバイナリのシリアル化可能な型のサポートも含まれます。

プロバイダーは、異なる複数の ASP.NET アプリケーションで同一のセッション状態データを読み書きする機能をサポートしています。 たとえば、開発者には、/contoso と /adventureworks という 2 つの異なる ASP.NET サイトがあるとします。 セッション状態プロバイダーを各 Web アプリケーションで構成し、キャッシュ内の同じセッション状態ストアを参照できます。 その結果、指定されたすべてのセッション ID に対して両方のアプリケーションが同じセッション データを読み書きするようになります。

セッション状態プロバイダーは、複数のリーダーと単一ライター向けに同じセッション状態セットへの同時アクセスをサポートします。 この場合、リーダーは、ReadOnly セッション状態を使用するとマークされているページとして定義されます。 AJAX のコールバックを広範囲に使用するアプリケーションでは、アプリケーションのセッション状態アクセス パターンの大部分がセッション状態への読み取り専用アクセスしか必要としない場合、サーバー側での要求キュー処理は発生しません。

ASP.NET プロジェクトにセッション状態プロバイダーを追加するには

  1. 最初に、ASP.NET プロバイダーと共に使用するキャッシュを構成します。

  2. NuGetを使用して、Visual Studioの ASP.NET プロジェクトにキャッシュ サポートを追加します。

    重要

    これらの手順を実行するには、NuGet Package Manager バージョン 2.6.40627.9000 以降が必要です。 最新のNuGet パッケージ マネージャーをインストールするには、NuGet パッケージ マネージャーを参照してください。

  3. セッション状態のキャッシュを構成する既存の sessionState 要素を削除します。 NuGet パッケージによって追加されたコメント付き sessionState セクションは削除しないでください。

  4. 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">
      <!-- Other cache settings omitted -->
    </dataCacheClient>
    

    使用可能な構成オプションの一覧については、「Azure Managed Cache Service のキャッシュ クライアント構成設定」を参照してください。 キャッシュ用の ASP.NET プロバイダーでは、バイナリまたはカスタムシリアル化の種類がサポートされていないことに注意してください。 これらのシリアライザーをセッション状態に使用する場合、次の例外が発生します。アセンブリ 'Microsoft.Web.DistributedCache, Version=101.0.0.0,Culture=neutral, PublicKeyToken=31bf3856ad364e35' の型 'Microsoft.Web.DistributedCache.SerializableSessionStateStoreData' はシリアル化可能としてマークされません"

  • セッション状態プロバイダーの設定を変更します。 使用可能な構成オプションの一覧については、「ASP.NET Azure Managed Cache Service のセッション状態プロバイダー構成設定」を参照してください。

このセクションの内容