Azure In-Role Cache での ASP.NET セッション状態プロバイダーの構成設定

重要

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

このトピックでは、ASP.NET 用の Azure セッション状態プロバイダーの構成設定について説明します。 これらの設定は、web.config ファイルの sessionState 要素の providers セクションで指定されます。

セッション状態の構成設定

属性 [説明]

name (必須)

プロバイダーを参照するために sessionState 要素によって使用されるプロバイダーの "フレンドリ" 名。

(必須)

プロバイダーの .NET Framework 型文字列。 必要な値については、後述の注を参照してください。

cacheName (必須)

Azure キャッシュの名前。 これは、“default” に設定する必要があります。

dataCacheClientName (省略可能)

dataCacheClients 構成セクションから使用する dataCacheClient セクションの名前。 この属性は、web.config ファイルに複数の dataCacheClient セクションが指定されている場合にのみ必要です。 既定では、プロバイダーは dataCacheClient という名前 “default”のセクションを使用します。

applicationName (省略可能)

出力キャッシュ データを保存するためにキャッシュ キーを作成するときに、プロバイダーが使用する文字列値。 既定値は空の文字列です。 この属性が設定されていない場合、プロバイダーは内部的に使用するキャッシュ キーの一部として HttpRuntime.AppDomainAppId の値を使用します。 セッション状態機能とは異なり、通常は複数の ASP.NET アプリケーションで出力キャッシュ データを共有しません (たとえば、/contoso と /AdventureWorks は出力キャッシュ データを共有できません)。 共有するのではなく、同じアプリケーションの複数の物理インスタンスが、いずれも同じ出力キャッシュ データにアクセスできるようにします。 この場合、2 つの実行方法があります。

  • applicationName プロバイダー属性が明示的に設定されていない場合、キャッシュ キーを構築するときに、HttpRuntime.AppDomainAppId がプロバイダーによって内部的に使用されます。 つまり、同じアプリケーションの各物理インスタンス (言い換えると、/contoso アプリケーションをホストする各 Web サーバー) を、メタベース パスがまったく同じ IIS にインストールする必要があります。 SQL Serverおよびアウトプロセス セッション状態プロバイダーでメタベース パスを使用する方法の説明を参照してくださいhttps://support.microsoft.com/kb/325056。 セッションの状態は異なる機能ですが、メタベース パスの同期を維持すると、同じ問題が発生します。これは、web.config ファイルに applicationName 属性が設定されていない場合の出力キャッシュに適用されます。

  • 簡単な方法は、同じ ASP.NET アプリケーションの各インスタンス (/contoso アプリケーションをホストする各 Web サーバー上など) で、web.config ファイルで同じ applicationName 属性を使用することです。 こうすることで、同じアプリケーションの複数の物理インスタンスが、同じ出力キャッシュ データの読み取りおよび書き込みを実行できるようになります。 この場合、プロバイダーはキャッシュ キーを構築するときに AppDomainAppId を使用しないため、メタベース パスが一致しないリスクはありません。

useBlobMode (省略可能)

1 つのシリアル化された BLOB としてセッション状態データの読み込みと保存を行うかどうかを指定するブール値。 今回のリリースでは、この属性を既定値の true に設定する必要があります。 false の使用はサポートされていません。

nonInlinedAdditionalLifetime (サポートされていません)

今回のリリースでは、この属性はサポートされていません。

retryInterval (省略可能)

キャッシュと通信するときにエラーが発生した場合、再試行の間に待機する時間。 この値に使用する文字列の形式は "HH:MM:SS" です。 既定で、プロバイダーは 1 秒間スリープ状態になります。

retryCount (省略可能)

キャッシュとの通信エラーが発生したときに、プロバイダーに再試行回数を通知する整数値。 ただし、再試行できない操作もあります。 再試行回数の既定値は 3 です。 プロバイダーは、各再試行の間に構成された retryInterval 時間をスリープ状態にします。

inlinedKeys (サポートされていません)

今回のリリースでは、この属性はサポートされていません。

maxInlinedStringLength (サポートされていません)

今回のリリースでは、この属性はサポートされていません。

注意

type 属性を .に設定する“Microsoft.Web.DistributedCache.DistributedCacheOutputCacheProvider, Microsoft.Web.DistributedCache”必要があります。

<configuration>
  <configSections>
    <section name="dataCacheClients" 
          type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core"
          allowLocation="true" allowDefinition="Everywhere" />
    <section name="cacheDiagnostics"
          type="Microsoft.ApplicationServer.Caching.AzureCommon.DiagnosticsConfigurationSection, Microsoft.ApplicationServer.Caching.AzureCommon"
          allowLocation="true" allowDefinition="Everywhere" />
  </configSections>
  <system.web>
    <!-- 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>
  </system.web>
  <dataCacheClients>
    <dataCacheClient name="default">
      <autoDiscover isEnabled="true" identifier="CacheWorkerRole1" />
    </dataCacheClient>
  </dataCacheClients>
  <cacheDiagnostics>
    <crashDump dumpLevel="Off" dumpStorageQuotaInMB="100" />
  </cacheDiagnostics>
</configuration>

参照

概念

Azure In-Role Cache 用のセッション状態プロバイダー