適用於 Azure 受管理的快取服務工作階段狀態提供者

重要

Microsoft 建議所有新的開發都使用 Azure Redis 快取。 如需選擇 Azure 快取供應專案的目前檔和指引,請參閱 哪個 Azure 快取供應專案適合我?

Microsoft Azure快取會話狀態提供者是 ASP.NET 應用程式的跨進程儲存機制。 此提供者可讓您在 快取中儲存工作階段狀態,而非在記憶體中或 SQL Server 資料庫中儲存。

如需會話狀態快取的範例,請參閱 快取會話狀態和輸出快取範例

功能

Microsoft Azure快取會話狀態提供者具有過去 ASP.NET 會話狀態提供者的下列改善:

  • 針對工作階段狀態序列化內部使用 NetDataContractSerializer 類別。

  • 可在不同 ASP.NET 應用程式間共用工作階段狀態。

  • 支援同時存取多個讀取器和單一寫入器的相同工作階段狀態集。

  • 可以透過快取用戶端屬性使用壓縮功能。

使用 NetDataContractSerializer 類別進行序列化可以支援更為廣泛的可序列化型別。 包括支援二進位檔可序列化型別。

提供者可支援讓不同 ASP.NET 應用程式讀取及寫入相同的工作階段狀態資料。 例如,假設開發人員有兩個不同的 ASP.NET 網站:/contoso 和 /adventureworks。 可以在每個 Web 應用程式中設定工作階段狀態提供者,使其指向快取中相同的工作階段狀態存放區。 因此,對於任何給定的工作階段識別碼,這兩個應用程式都會讀取和寫入相同的工作階段資料。

工作階段狀態提供者支援同時存取多個讀取器和單一寫入器的相同工作階段狀態集。 此案例中的讀取器會定義為標示使用 ReadOnly 工作階段狀態的頁面。 如果大多數的應用程式工作階段狀態存取模式只需要唯讀存取工作階段狀態,廣泛使用 AJAX 回呼的應用程式將不會有伺服器端的要求佇列。

如需新增工作階段狀態提供者至 ASP.NET 專案

  1. 首先,設定與 ASP.NET 提供者搭配使用的快取。

  2. 使用 NuGet,在 Visual Studio 中將快取支援新增至您的 ASP.NET 專案。

    重要

    這些步驟需要 NuGet 封裝管理員 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 受控快取服務的快取用戶端組態設定。 請注意,快取的 ASP.NET 提供者不支援二進位或自訂序列化類型。 如果這些序列化程式用於會話狀態,就會發生下列例外狀況:「在元件 'Microsoft.Web.DistributedCache.SerializableSessionStateStoreData' 中輸入 'Microsoft.Web.DistributedCache, Version=101.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 未標示為可序列化」

  • 變更工作階段狀態提供者設定。 如需可用組態選項的清單,請參閱ASP.NET 適用于 Azure 受控快取服務 的會話狀態提供者組態設定。

本節內容