次の方法で共有


ASP.NET セッション状態プロバイダーの構成 (Windows Server AppFabric キャッシュ)

Windows Server AppFabric は ASP.NET Web アプリケーションのカスタム セッション状態プロバイダーを提供します。このセッション状態プロバイダーを使用すると、Web アプリケーションはキャッシュ クラスターにセッション オブジェクトを分散し、スケーラビリティを実現できます。AppFabric のキャッシュ機能の性質のため、セッションに入れるオブジェクトはシリアル化可能であることが必要です。

このトピックの手順では、Web アプリケーションの開発環境が既に整っていて、AppFabric キャッシュ アセンブリへの参照が設定済みであことなどを前提としています。詳細については、「キャッシュ クライアント開発環境の準備 (Windows Server AppFabric キャッシュ)」を参照してください。

ASP.NET Web アプリケーションで AppFabric セッション状態プロバイダーを使用するには、アプリケーションの web.config ファイルに次の要素を追加する必要があります。

  • configSections: この要素は構成ファイルで開始の configuration タグの下に最初の要素として指定する必要があります。AppFabric キャッシュ アセンブリを機能させるために必須です。

  • dataCacheClient: この要素は configuration 要素の子です。キャッシュ クライアントの構成およびキャッシュ ホストの指定に使用されます。キャッシュ クライアントの詳細については、「キャッシュ クライアントを開発する (Windows Server AppFabric キャッシュ)」を参照してください。

  • sessionState: この要素は system.web 要素の子です。AppFabric を使用してセッション状態を管理するよう Web アプリケーションに指定します。cacheName 属性では、使用される名前付きキャッシュを指定します。キャッシュ領域にセッション データを保存する場合、regionName 属性を使用して領域を指定します。

ヒント

領域に保存されたオブジェクトはキャッシュ ホスト間で負荷分散されず、領域が作成されたキャッシュ ホストに置かれます。そのため、一般にこの構成はお勧めできません。特に 1 つのホストにすべてのセッション オブジェクトを配置する必要がある場合にのみ、領域を使用してください。

警告

キャッシュ ホストの名前の指定に使用する web.config ファイルは、セキュリティで保護することをお勧めします。

Web アプリケーションの AppFabric セッション状態プロバイダーを構成するには

  1. この手順の後に示す例から configSections 要素を web.config ファイルにコピーします。この要素が configuration タグ内の最初の要素であることを確認します。

  2. この手順の後にある例から dataCacheClient 要素を web.config ファイルにコピーします。この要素は configuration 要素内で configSections 要素の後に追加します。

    1. ホスト要素の name 属性と cachePort 属性を構成し、使用環境のキャッシュ サーバーに一致させます。必要に応じてホスト要素の追加や削除を行います。
  3. この手順の後にある例から sessionState 要素を web.config ファイルにコピーします。この要素は system.web 要素内に配置します。

  4. Web アプリケーションの ID を特定します。これは、Web サーバーで IIS Manager を使用して行うことができます。Web アプリケーションに関連付けられているアプリケーション プールの ID を確認します。Grant-CacheAllowedClientAccount Windows Powershell コマンドを使用して、キャッシュ クラスターへのこのユーザー アクセスを許可します。

    ヒント

    アプリケーション プールが "NT Authority\Network Service" などの組み込みコンピューター アカウントとして実行している場合は、そのコンピューターに対してキャッシュ クラスターへのアクセスを許可する必要があります。これを行うには、DOMAINNAME\MACHINENAME$ をアカウントとして指定します。これがコンピューター アカウントであることを示すため、コンピューター名に "$" を付加することに注意してください。

この例は、ASP.NET Web アプリケーションを構成し、キャッシュ クライアントを使用して NamedCache1 と呼ばれる分散キャッシュにセッション データを保存する方法を示しています。この例のキャッシュ クライアントは、CacheServer1 という名前の 1 つのキャッシュ ホストとのみ通信するように構成されています。

最初に、configuration 要素の最初の要素として configSections 要素を web.config ファイルに追加します。

<!--configSections must be the FIRST element -->
<configSections>
   <!-- required to read the <dataCacheClient> element -->
   <section name="dataCacheClient"
         type="Microsoft.ApplicationServer.Caching.DataCacheClientSection,
            Microsoft.ApplicationServer.Caching.Core, Version=1.0.0.0, 
            Culture=neutral, PublicKeyToken=31bf3856ad364e35"
         allowLocation="true"
         allowDefinition="Everywhere"/>
</configSections>

次に、web.config ファイルの configSections 要素の後に dataCacheClient 要素を追加します。ここで、キャッシュ クライアントがアプリケーションのニーズを満たすように構成します。詳細については、「アプリケーション構成設定 (Windows Server AppFabric キャッシング)」を参照してください。

<!-- cache client -->
<dataCacheClient> 
  <!-- cache host(s) -->
  <hosts>
    <host
       name="CacheServer1"
       cachePort="22233"/>
  </hosts>
</dataCacheClient>

configSections 要素と dataCacheClient 要素を追加した後、web.config ファイルで system.web 要素内に sessionState 要素を追加します。ここで、Web アプリケーションでセッション状態データの保存に使用するキャッシュを指定します。

複数の Web アプリケーションで同じセッション状態を共有する必要がある場合、同じ sharedId 属性値を使用することに注意してください。そうでない場合は、sharedId 属性を指定する必要はありません。

<sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider">
  <providers>
    <!-- specify the named cache for session data -->
    <add 
      name="AppFabricCacheSessionStoreProvider" 
      type="Microsoft.ApplicationServer.Caching.DataCacheSessionStoreProvider" 
      cacheName="NamedCache1"
      sharedId="SharedApp"/>
  </providers>
</sessionState>

完了すると、Web アプリケーションの最終的な web.config ファイルは次の例のようになります。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  
  <!--configSections must be the FIRST element -->
  <configSections>
     <!-- required to read the <dataCacheClient> element -->
     <section name="dataCacheClient"
         type="Microsoft.ApplicationServer.Caching.DataCacheClientSection,
            Microsoft.ApplicationServer.Caching.Core, Version=1.0.0.0, 
            Culture=neutral, PublicKeyToken=31bf3856ad364e35"
         allowLocation="true"
         allowDefinition="Everywhere"/>
  </configSections>
  
  <!-- cache client -->
  <dataCacheClient>    
    <!-- cache host(s) -->
    <hosts>
      <host
         name="CacheServer1"
         cachePort="22233"/>
    </hosts>
  </dataCacheClient>

  <system.web>
    <sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider">
      <providers>
        <!-- specify the named cache for session data -->
        <add 
          name="AppFabricCacheSessionStoreProvider" 
          type="Microsoft.ApplicationServer.Caching.DataCacheSessionStoreProvider" 
          cacheName="NamedCache1"
          sharedId="SharedApp"/>
      </providers>
    </sessionState>
  </system.web>
</configuration>

関連項目

概念

Windows Server AppFabric キャッシュ クライアントの概要 (XML)
構成メソッドの使用 (Windows Server AppFabric キャッシュ)
Windows Server AppFabric のキャッシュの概念
キャッシュ クライアントを開発する (Windows Server AppFabric キャッシュ)

  2011-12-05