如何:配置用于 ASP.NET 的 AppFabric 会话状态提供程序(AppFabric 1.1 缓存)

本主题将介绍如何将 ASP.NET Web 应用程序配置为使用设置的 AppFabric 缓存进行会话状态缓存。可以通过修改目标 Web 应用程序的 web.config 文件来完成此配置过程。

使用 Microsoft AppFabric 1.1 for Windows Server 缓存 存储会话状态

为了让您的 ASP.NET Web 应用程序使用 AppFabric 会话状态应用程序,必须向应用程序的 web.config 文件中添加以下元素:

  • configSections:此元素必须是配置文件中的第一个元素,位于开头的 configuration 标记下。AppFabric 缓存 程序集需要此元素才能运行。

  • dataCacheClients:此元素是配置元素的子元素。它用来保留一些用来配置缓存客户端和指定缓存主机的 dataCacheClient 元素。

  • sessionState:此元素是 system.web 元素的子元素。它指定 Web 应用程序应使用 Microsoft AppFabric 1.1 for Windows Server 来管理会话状态数据。cacheName 属性指定将使用的命名缓存。dataCacheClientName 属性指定使用哪一 dataCacheClient 部分进行缓存配置。

警告

建议您确保用于指定缓存主机名称的 web.config 文件的安全。

使用 Microsoft AppFabric 1.1 for Windows Server 缓存存储会话状态的步骤

  1. 首先,为您的 Visual Studio 2010 项目作好使用 Microsoft AppFabric 1.1 for Windows Server 缓存 的准备。有关详细信息,请参阅准备缓存客户端开发环境(AppFabric 1.1 缓存)

  2. 除了常规的缓存程序集之外,还要参考 Microsoft AppFabric 1.1 for Windows Server 缓存 安装路径中的 Microsoft.Web.DistributedCache.dll 程序集。

  3. 将这些步骤之后示例中的 configSections 元素复制到 web.config 文件中。确保此元素是 configuration 标记内的第一个元素。

  4. 将这些步骤之后示例中的 dataCacheClients 元素复制到 web.config 文件中。应该将它添加到 configuration 元素内的 configSections 元素后面。

    1. 将主机元素的 namecachePort 属性配置为与环境中的缓存服务器相匹配。根据需要添加或删除主机元素。
  5. 将这些步骤之后示例中的 sessionState 元素复制到 web.config 文件中。它应该放置在 system.web 元素内。指定 cacheNamedataCacheClientName 属性,以及其他所有必需的设置。

  6. 确定 Web 应用程序的身份。在 Web 服务器上,可在 IIS Manager 中完成此操作。查看与 Web 应用程序关联的应用程序池的身份。使用 Grant-CacheAllowedClientAccount Windows Powershell 命令授予此用户访问缓存群集的权限。

    Tip技巧
    如果应用程序池作为内置计算机帐户(如“NT Authority\Network Service”)运行,则您应该授予该计算机访问缓存群集的权限。可以通过将 DOMAINNAME\MACHINENAME$ 指定为帐户来实现此操作。请注意,在计算机名称之后附加“$”以表示这是计算机帐户。

示例

此示例显示如何将 ASP.NET Web 应用程序配置为使用缓存客户端将会话数据存储到名为 default 的分布式缓存中。此示例中的缓存客户端配置为仅与一个名为 CacheServer1 的缓存主机通信。

  1. 首先,将 configSections 元素添加到 web.config 文件中作为 configuration 元素中的第一个元素:

      <!--configSections must be the FIRST element -->
      <configSections>
        <section name="dataCacheClients"
                 type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core"
                 allowLocation="true" allowDefinition="Everywhere"/>
      </configSections>
    
  2. 其次,添加一个包含一个或多个 dataCacheClient 元素的 dataCacheClients 元素。将此元素添加到 web.config 文件中 configSections 元素的后面。您可以在此处对缓存客户端进行配置,使其符合您的应用程序需求。有关详细信息,请参阅应用程序配置设置(AppFabric 1.1 缓存)

      <dataCacheClients>
        <dataCacheClient name="default">
          <hosts>
            <host name="CacheServer1" cachePort="22233" />
          </hosts>
        </dataCacheClient>
      </dataCacheClients>
    
  3. 添加 configSectionsdataCacheClients 元素之后,将 sessionState 元素添加到 web.config 文件的 system.web 元素内。您在此处指定 Web 应用程序将使用哪一个缓存来存储会话状态数据。自定义 cacheNamedataCacheClientName 属性,以及其他所有必需的设置。

    请注意,如果多个 Web 应用程序需要共享相同的会话状态,则它们应使用相同的 applicationNamme 属性值。否则,您不需要指定 applicationNamme 属性。

        <sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider" compressionEnabled="false">
          <providers>
            <add name="AppFabricCacheSessionStoreProvider"
                 type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache"
                 cacheName="default"
                 useBlobMode="true"
                 dataCacheClientName="default"/>
          </providers>
        </sessionState>
    

操作完成后,Web 应用程序的最后一个 web.config 文件将类似于以下示例。

<?xml version="1.0"?>

<configuration>
  <configSections>
    <section name="dataCacheClients"
             type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core"
             allowLocation="true" allowDefinition="Everywhere"/>
  </configSections>

  <dataCacheClients>
    <dataCacheClient name="default" channelOpenTimeout="10000">
      <hosts>
        <host name="CacheServer1" cachePort="22233" />
      </hosts>
    </dataCacheClient>
  </dataCacheClients>
  
  <system.web>
    <sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider" compressionEnabled="false">
      <providers>
        <add name="AppFabricCacheSessionStoreProvider"
             type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache"
             cacheName="default"
             useBlobMode="true"
             dataCacheClientName="default"/>
      </providers>
    </sessionState>
  </system.web>
</configuration>

另请参阅

概念

会话状态提供程序(AppFabric 1.1 缓存)

  2012-03-05