共用方式為


設定 ASP.NET 工作階段狀態提供者 (Windows Server AppFabric 快取)

Windows Server AppFabric 為 ASP.NET Web 應用程式提供自訂工作階段狀態提供者。因此 Web 應用程式可將工作階段物件分散到快取叢集中的節點,以提供延展性。由於 AppFabric 快取功能的性質,您在 Session 中放入的物件必須是可序列化的。

本主題中的程序假設您已準備好 Web 應用程式的開發環境,並已設定對 AppFabric 快取組件的參照等。如需詳細資訊,請參閱準備快取用戶端開發環境 (Windows Server AppFabric 快取)

如果要讓 ASP.NET Web 應用程式使用 AppFabric 工作階段狀態提供者,您必須新增下列元素到應用程式的 web.config 檔案:

  • configSections:此元素必須是組態檔中的第一個元素,在開頭的 configuration 標記下方。AppFabric 快取組件需要此元素才能作用。

  • dataCacheClient:此元素是組態元素的子系。它是用來設定快取用戶端以及指定快取主機。如需有關快取用戶端的詳細資訊,請參閱開發快取用戶端 (Windows Server AppFabric 快取)

  • sessionState:此元素是 system.web 元素的子系。它是用來告知 Web 應用程式必須使用 AppFabric 來管理工作階段狀態。cacheName 屬性指定將使用的具名快取。如果您將工作階段資料儲存在快取區域中,請使用 regionName 屬性來指定區域。

注意

儲存於區域中的物件不會在快取主機之間進行負載平衡,而只會存在於建立區域所在的快取主機上。基於這個理由,這並非一般建議的組態。當有必須在單一主機上放置所有工作階段物件的特殊需求時,才應使用區域。

警告

建議您保護用來指定快取主機名稱的 web.config 檔案的安全。

為 Web 應用程式設定 AppFabric 工作階段狀態提供者

  1. 在執行這些步驟之後,將 configSections 元素從範例複製到您的 web.config 檔案中。確定此元素是 configuration 標記內的第一個元素。

  2. 在執行這些步驟之後,將 dataCacheClient 元素從範例複製到您的 web.config 檔案中。您必須將它新增到 configuration 元素內的 configSections 元素之後。

    1. 將主機元素的 namecachePort 屬性設定為符合您環境中的快取伺服器。視需要新增或移除主機元素。
  3. 在執行這些步驟之後,將 sessionState 元素從範例複製到您的 web.config 檔案中。您必須將它放在 system.web 元素內。

  4. 判斷 Web 應用程式的身分識別。這可以在 Web 伺服器上的 IIS 管理員中完成。請查看與 Web 應用程式相關聯的應用程式集區身分識別。請使用 Grant-CacheAllowedClientAccount Windows Powershell 命令,將快取叢集的存取權授與此使用者。

    提示

    如果應用程式集區是以內建電腦帳戶 (如 "NT Authority\Network Service) 的身分執行,則您應該授與該電腦的快取叢集存取權。將 DOMAINNAME\MACHINENAME$ 指定為帳戶就可進行授與。請注意,"$" 會附加至電腦名稱,指出這是電腦帳戶。

範例

此範例顯示如何設定 ASP.NET Web 應用程式,以使用快取用戶端將工作階段資料儲存到名為 NamedCache1 的分散式快取。此範例中的快取用戶端只設定為與名為 CacheServer1 的單一快取主機進行通訊。

首先,將 configSections 元素新增到 web.config 檔案,以做為 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>

接著,將 dataCacheClient 元素新增到 web.config 檔案,接在 configSections 元素後面。這是您設定快取用戶端以符合應用程式需求的位置。如需詳細資訊,請參閱應用程式組態設定 (Windows Server AppFabric 快取)

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

在新增 configSectionsdataCacheClient 元素之後,將 sessionState 元素新增到 web.config 檔案的 system.web 元素內。這是您指定 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