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

Asp.net mvc 为什么MVC4中的会话状态突然丢失数据?,asp.net-mvc,asp.net-mvc-4,azure,session-state,Asp.net Mvc,Asp.net Mvc 4,Azure,Session State,我在下一页中读到了持续的WindowsAzure回收存储会话 这是我的网络配置设置: <sessionState mode="InProc" timeout="2880" /> 我读到可能我必须改变模式以保持会话的活动状态,因为当我使用程序时,突然发生了这种情况。我们一个小时后再去看吧 如何避免这种糟糕的用户体验?如果您正在运行多个实例,那么当负载平衡器在实例之间反弹用户时,您将丢失会话数据。“InProc”设置将会话数据存储在每个实例上,而不是跨实例读取 如果要使用同一位置

我在下一页中读到了持续的WindowsAzure回收存储会话

这是我的网络配置设置:

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

我读到可能我必须改变模式以保持会话的活动状态,因为当我使用程序时,突然发生了这种情况。我们一个小时后再去看吧


如何避免这种糟糕的用户体验?

如果您正在运行多个实例,那么当负载平衡器在实例之间反弹用户时,您将丢失会话数据。“InProc”设置将会话数据存储在每个实例上,而不是跨实例读取

如果要使用同一位置的缓存,则配置应如下所示:

<!-- 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>

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

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


很抱歉迟到了,但我花了所有这些天来实现它。我创建了一个新的azure项目,其中包括我的MVC应用程序,还添加了一个缓存角色(作为专用角色)。如果我没有使用同一地点,有什么问题吗?我真的不知道他们之间的区别等等!事实上,我没有运行多个实例,我的页面使用的是共享模式,上面只添加了instanceSee更新-部署时回收缓存是将缓存BLOB配置字符串设置为“UseDevelopmentStorage=true”的症状