【问题标题】:Why my session state in MVC4 suddenly loses data?为什么我在 MVC4 中的会话状态突然丢失数据?
【发布时间】:2013-04-03 00:58:17
【问题描述】:

我在下面的页面中阅读到 WindowsAzure 循环存储会话

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

这是我的 webconfig 设置:

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

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

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

【问题讨论】:

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


    【解决方案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

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

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

    【讨论】:

    • 对不起,我花了这么多天来实现它。我创建了一个新的天蓝色项目,其中包括我的 MVC 应用程序,并且我添加了一个缓存角色(作为专用角色)。如果我不使用 co-located 会有什么问题吗?我真的不知道它们之间的区别
    • 等一下!事实上,我并没有运行多个实例,我的页面正在使用只有实例的共享模式
    • 查看上面添加的更新 - 部署时回收疼痛是缓存 BLOB 配置字符串设置为“UseDevelopmentStorage=true”的症状
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 2019-07-18
    • 1970-01-01
    • 2014-08-23
    • 1970-01-01
    • 2021-03-03
    相关资源
    最近更新 更多