在Azure上用AppFabic替换WebRole的Session存储
如果一个WebRole在部署的时候,指定了多个Instance,则这些Instance之间的Session共享就是一个不得不解决的问题了。
我们知道在Asp.net中Session的存储方式有:InProc,SQLServer,StateServer和Custom。此处就介绍在Azure上使用AppFabic来存储Session的方法。
1、 在Windows Azure Platform上开通Cache服务,如下图。
2、 配置web.config来使用该Cache服务来存储Session
<configuration>
<!-- 请务必保证此节点为第一个节点 -->
<configSections>
<section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core"
allowLocation="true" allowDefinition="Everywhere"/>
</configSections>
<dataCacheClients>
<dataCacheClient name="default">
<hosts>
<host name="myCacheName.cache.windows.net" cachePort="22233" />
</hosts>
<securityProperties mode="Message">
<messageSecurity
authorizationInfo="YWNzOmh0dHBzOi8vYXp1cmVtZ3ItY2FjaGUuYWNjZXNzY29udHJvbC53aW5kb3dzLm5ldC9XUkFQdjAuOS8mb3duZXImdWRWelVZbTBFTm1uOWQydWw5SlRjaFpzZHFLSGVVS1pNcktDZGczZndBcz0maHR0cDovL0F6dXJlTWdyLmNhY2hlLndpbmRvd3MubmV0">
</messageSecurity>
</securityProperties>
</dataCacheClient>
</dataCacheClients>
<system.web>
<sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider" timeout="20">
<providers>
<add name="AppFabricCacheSessionStoreProvider"
type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache"
cacheName="default"
useBlobMode="false"
dataCacheClientName="default" />
</providers>
</sessionState>
</system.web>
</configuration>
参考文章: Windows Azure AppFabric Caching 服务简介
安装,配置,使用Windows Server AppFabric