6

对于在 Azure 中运行的 MVC4 应用程序,我将会话存储在同位缓存中。如Microsoft 提供的此操作指南中所述。

我运行了两个小实例,一切似乎都运行良好。我可以登录到应用程序,当我在应用程序中四处浏览时,我仍然保持登录状态。所以会话似乎在这两种情况下都有效。

但是,当我更新会话数据时,如下所示:

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 缓存时,我是否需要以其他方式处理会话,还是我在这里缺少的其他东西?

4

1 回答 1

7

您需要分配一个applicationName,以便分布式缓存可以查看同一应用程序边界内的共享状态。请参阅MSDN 论坛帖子以供参考

<add name="AppFabricCacheSessionStoreProvider"
          type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache"
          applicationName="azureMVC4App"
          cacheName="default"
          useBlobMode="true"
          dataCacheClientName="default" />

如果要跨应用程序边界共享缓存状态,则需要分配sharedId

于 2012-09-11T13:31:47.437 回答