为什么MVC4中的会话状态突然丢失数据?

时间:2013-04-10 23:47:43

标签: asp.net-mvc asp.net-mvc-4 azure session-state

我正在阅读下一页继续WindowsAzure回收商店会话

Why do my instances recycle when trying to store sessions in co-located Azure cache?

这是我的webconfig设置:

<sessionState mode="InProc" timeout="2880" />

我正在阅读,也许我必须更改模式以保持会话活着,因为当我使用该程序时,突然发生这种情况。我们稍后会看一小时。

我可以做些什么来避免这种糟糕的用户体验?

1 个答案:

答案 0 :(得分:1)

如果您正在运行多个实例,那么当负载均衡器在实例之间退回用户时,您将丢失会话数据。 “InProc”设置将会话数据存储在每个单独的实例上,而不是跨实例存储 - 阅读more

如果您想使用共存缓存,那么您的配置应该类似于:

<!-- Windows Azure Caching session state provider -->
<sessionState mode="Custom" customProvider="AFCacheSessionStateProvider">
  <providers>
    <add name="AFCacheSessionStateProvider" 
      type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache"
      cacheName="shared" 
      dataCacheClientName="shared" 
      applicationName="AFCacheSessionState"/>
  </providers>
</sessionState>

阅读more

UPDATE :最后,检查您的ServiceConfiguration.cscfg文件中是否使用了REAL BLOB连接字符串。如果连接字符串显示“ UseDevelopmentStorage = true ”,则部署的角色将永远无法创建/连接到缓存 - 它将在模拟器中本地工作。:

<Setting name="Microsoft.WindowsAzure.Plugins.Caching.ConfigStoreConnectionString" value="UseDevelopmentStorage=true" />