对于我的MVC4应用程序,在Azure中运行,我将会话存储在共存的缓存中。如Microsoft提供的this How-to中所述。
我运行两个小实例,一切似乎都运行正常。我可以登录到应用程序,当我在应用程序中浏览时,我仍然保持登录状态。因此,会话似乎适用于两个实例。
但是,当我更新会话数据时:
HttpContext.Current.Session["someVar"] = "new value";
该更改似乎只对处理该特定请求的实例产生影响。现在,当我浏览应用程序时,有时我会得到初始值,有时我会得到更新的值。
我没有对web.config进行任何更改,所以它看起来与Nuget包添加它时完全一样:
<sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider">
<providers>
<add name="AppFabricCacheSessionStoreProvider"
type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache"
cacheName="default"
useBlobMode="true"
dataCacheClientName="default" />
</providers>
</sessionState>
在使用Azure缓存时,是否需要以其他方式处理会话,或者这是我在这里缺少的其他内容?
答案 0 :(得分:7)
您需要分配applicationName
,以便分布式缓存可以查看同一应用程序边界内的共享状态。请参阅MSDN forum post for reference。
<add name="AppFabricCacheSessionStoreProvider"
type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache"
applicationName="azureMVC4App"
cacheName="default"
useBlobMode="true"
dataCacheClientName="default" />
如果要跨应用程序边界共享缓存状态,则需要指定sharedId