如何:配置用于 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 缓存存储会话状态的步骤
首先,为您的 Visual Studio 2010 项目作好使用 Microsoft AppFabric 1.1 for Windows Server 缓存 的准备。有关详细信息,请参阅准备缓存客户端开发环境(AppFabric 1.1 缓存)。
除了常规的缓存程序集之外,还要参考 Microsoft AppFabric 1.1 for Windows Server 缓存 安装路径中的 Microsoft.Web.DistributedCache.dll 程序集。
将这些步骤之后示例中的
configSections
元素复制到 web.config 文件中。确保此元素是configuration
标记内的第一个元素。将这些步骤之后示例中的
dataCacheClients
元素复制到 web.config 文件中。应该将它添加到configuration
元素内的configSections
元素后面。- 将主机元素的
name
和cachePort
属性配置为与环境中的缓存服务器相匹配。根据需要添加或删除主机元素。
- 将主机元素的
将这些步骤之后示例中的
sessionState
元素复制到 web.config 文件中。它应该放置在system.web
元素内。指定cacheName
和dataCacheClientName
属性,以及其他所有必需的设置。确定 Web 应用程序的身份。在 Web 服务器上,可在 IIS Manager 中完成此操作。查看与 Web 应用程序关联的应用程序池的身份。使用
Grant-CacheAllowedClientAccount
Windows Powershell 命令授予此用户访问缓存群集的权限。技巧
如果应用程序池作为内置计算机帐户(如“NT Authority\Network Service”)运行,则您应该授予该计算机访问缓存群集的权限。可以通过将 DOMAINNAME\MACHINENAME$ 指定为帐户来实现此操作。请注意,在计算机名称之后附加“$”以表示这是计算机帐户。
示例
此示例显示如何将 ASP.NET Web 应用程序配置为使用缓存客户端将会话数据存储到名为 default
的分布式缓存中。此示例中的缓存客户端配置为仅与一个名为 CacheServer1
的缓存主机通信。
首先,将
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>
其次,添加一个包含一个或多个
dataCacheClient
元素的dataCacheClients
元素。将此元素添加到 web.config 文件中configSections
元素的后面。您可以在此处对缓存客户端进行配置,使其符合您的应用程序需求。有关详细信息,请参阅应用程序配置设置(AppFabric 1.1 缓存)。<dataCacheClients> <dataCacheClient name="default"> <hosts> <host name="CacheServer1" cachePort="22233" /> </hosts> </dataCacheClient> </dataCacheClients>
添加
configSections
和dataCacheClients
元素之后,将sessionState
元素添加到 web.config 文件的system.web
元素内。您在此处指定 Web 应用程序将使用哪一个缓存来存储会话状态数据。自定义cacheName
和dataCacheClientName
属性,以及其他所有必需的设置。请注意,如果多个 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>
另请参阅
概念
2012-03-05