Asp.net mvc 为什么MVC4中的会话状态突然丢失数据?
我在下一页中读到了持续的WindowsAzure回收存储会话 这是我的网络配置设置: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”设置将会话数据存储在每个实例上,而不是跨实例读取 如果要使用同一位置
<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”的症状