配置 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
:此元素是配置元素的子元素。它用于配置缓存客户端以及指定缓存主机。有关缓存客户端的详细信息,请参阅开发缓存客户端(Windows Server AppFabric 缓存)。sessionState
:此元素是 system.web 元素的子元素。它指定 Web 应用程序应使用 AppFabric 来管理会话状态。cacheName
属性指定将使用的命名缓存。如果将会话数据存储在缓存区域中,请使用regionName
属性来指定区域。
备注
存储在区域中的对象将不会在缓存主机之间负载平衡,但位于创建区域的缓存主机中。因此,它通常不是推荐的配置。仅当特殊要求查找单个主机上的所有会话对象时,才应该使用区域。
警告
建议您确保用于指定缓存主机名称的 web.config 文件的安全。
为 Web 应用程序配置 AppFabric 会话状态提供程序的步骤
将这些步骤之后示例中的
configSections
元素复制到 web.config 文件中。确保此元素是configuration
标记内的第一个元素。将这些步骤之后示例中的
dataCacheClient
元素复制到 web.config 文件中。应该将它添加到configuration
元素内的configSections
元素后面。- 将主机元素的
name
和cachePort
属性配置为与环境中的缓存服务器相匹配。根据需要添加或删除主机元素。
- 将主机元素的
将这些步骤之后示例中的
sessionState
元素复制到 web.config 文件中。它应该放置在system.web
元素内。确定 Web 应用程序的身份。在 Web 服务器上,可在 IIS Manager 中完成此操作。查看与 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>
添加 configSections
和 dataCacheClient
元素之后,将 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