c# - 存储在同一位置的 Azure 缓存中的 session 在多个实例上不同步

标签 c# asp.net asp.net-mvc azure azure-caching

对于在 Azure 中运行的 MVC4 应用程序,我将 session 存储在并置缓存中。如 this How-to 中所述Microsoft 提供的。

我运行了两个小型实例,一切似乎都工作正常。我可以登录该应用程序,并且当我在应用程序内浏览时,我仍然保持登录状态。所以 session 似乎在这两个实例上都有效。

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

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 缓存时是否需要以其他方式处理 session ,还是我在这里缺少其他内容?

最佳答案

您需要分配一个 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

关于c# - 存储在同一位置的 Azure 缓存中的 session 在多个实例上不同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12367554/

相关文章:

c# - 在 Entity Framework 中使用三元条件运算符或表达式

c# - 大量自定义路由约束会减慢站点速度?

c# - ASP.NET MVC - 重定向到正确的成员资格提供者

javascript - 将 JSON 绑定(bind)到 DevExtreme 数据网格

c# - Windows 服务在程序集加载时锁定

c# - 当单击 visual studio 2015 Resharper 上的运行按钮时,我的代码发生了变化

c# - 使用区域性信息将逗号十进制值转换为点十进制值的最佳方法

c# - ASP.NET 如何报告 UploadProgress?

asp.net - 在 ASP.NET 中使用 DisplayNameAttribute

c# - 无法设置 AuthenticationHeaderValue