ASP.NET 会话状态提供程序的配置设置(Azure 托管缓存服务)

重要

Microsoft 建议所有新开发使用 Azure Redis 缓存。 有关选择 Azure 缓存产品/服务的当前文档和指南,请参阅 哪个 Azure 缓存产品/服务适合我?

本主题介绍用于 ASP.NET 的 Azure 托管缓存服务 会话状态提供程序的配置设置。 这些设置是在 web.config 文件中 sessionState 元素的 providers 节中指定的。

会话状态配置设置

属性 说明

所需的名称 ()

sessionState 元素用来引用提供程序的提供程序的“友好”名称。

类型 (必需)

该提供程序的 .NET Framework 类型的字符串。 有关所需的值,请参阅下面的说明。

cacheName (所需的)

Azure 缓存的名称。 此属性必须设置为 “default”

dataCacheClientName (可选)

要从 dataCacheClients 配置部分使用的 dataCacheClient 节的名称。 只有在web.config文件中指定了多个 dataCacheClient 节时,才需要此属性。 默认情况下,提供程序将使用名为 “default”dataCacheClient 节。

applicationName (可选)

提供程序在创建用于存储输出缓存数据的缓存密钥时使用的字符串值。 默认值为空字符串。 如果未设置此属性,提供程序将使用 HttpRuntime.AppDomainAppId 的值作为它在内部使用的缓存键的一部分。 与会话状态功能不同的是,你不需要在不同的 ASP.NET 应用程序之间共享输出缓存数据(例如,/contoso 和 /AdventureWorks 无法共享输出缓存数据), 而是需要确保同一应用程序的不同物理实例均具有访问相同输出缓存数据的权限。 可以通过下面两种方法完成此任务:

  • 如果未显式设置 applicationName 提供程序属性,则在构造缓存密钥时,提供程序在内部使用 HttpRuntime.AppDomainAppId 。 这意味着同一应用程序的每个物理实例(即每个托管 /contoso 应用程序的 Web 服务器)都需要安装在 IIS 中相同的元数据库路径下。 请参阅https://support.microsoft.com/kb/325056有关元数据库路径如何与SQL Server和进程外会话状态提供程序一起使用的说明。 尽管会话状态是不同的功能,但存在相同的问题,即保持元数据库路径同步。这适用于在web.config文件中未设置 applicationName 属性时的输出缓存。

  • 例如,在承载 /contoso 应用程序) 的每个 Web 服务器上,对于同一个 ASP.NET 应用程序 (的每个实例来说,使用同一个 applicationName 属性在web.config文件中更简单。 这样就允许同一应用程序的不同物理实例读取和写入相同的输出缓存数据。 在这种情况下,提供程序在构造缓存密钥时不使用 AppDomainAppId ,因此没有不匹配的元数据库路径的风险。

useBlobMode (可选)

布尔值,该值指定是否将会话状态数据作为单个序列化的 BLOB 进行加载和存储。 在本版本中,此属性必须设置为 true(默认值)。 不支持使用值 false

nonInlinedAdditionalLifetime (不支持的)

本版本不支持此属性。

retryInterval (可选)

当与缓存之间的通信发生错误时,每两次重试之间须等待的时间跨度。 此值所使用的字符串格式为 "HH:MM:SS"。 默认情况下,提供程序将睡眠 1 秒。

retryCount (可选)

一个整数值,告知提供程序在与缓存的通信失败时的重试次数。 请注意,并非所有操作都可以重试。 默认值为 3 次重试。 每次重试尝试之间配置的 retryInterval 时间的提供程序会休眠。

inlinedKeys (不支持的)

本版本不支持此属性。

maxInlinedStringLength (不支持)

本版本不支持此属性。

注意

类型属性应设置为 “Microsoft.Web.DistributedCache.DistributedCacheOutputCacheProvider, Microsoft.Web.DistributedCache”

示例

<!-- Non-cache sections omitted for space -->
<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">
      <!--To use the in-role flavor of Azure Caching, set identifier to be the cache cluster role name -->
      <!--To use the Azure Caching Service, set identifier to be the endpoint of the cache cluster -->
      <autoDiscover
        isEnabled="true" 
        identifier="[Cache role name or Service Endpoint]" />
      <!--<localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" />-->
      <!--Use this section to specify security settings for connecting to your cache. 
          This section is not required if your cache is hosted on a role that is a part 
          of your cloud service. -->
      <!--<securityProperties mode="Message" sslEnabled="false">
        <messageSecurity authorizationInfo="[Authentication Key]" />
      </securityProperties>-->
    </dataCacheClient>
    <cacheDiagnostics>
      <crashDump dumpLevel="Off" dumpStorageQuotaInMB="100" />
    </cacheDiagnostics>
  </dataCacheClients>
</configuration>

注意

cacheDiagnostics 部分仅由缓存 NuGet 程序包添加到 ASP.NET Web 角色客户端。 有关详细信息,请参阅关于 Azure 托管缓存服务的 ClientDiagnosticLevel

另请参阅

概念

Azure 托管缓存服务的会话状态提供程序