3

我的网站(ASP.Net 4.0 C#)托管在具有多个实例的 Azure 服务器上。我的会话状态模式是“InProc”。不知何故,它不能在 Azure 实例上运行,它不能正确维护状态。请指教。

问候维韦克

4

3 回答 3

8

如果您有多个实例并且正在使用 InProc 会话,则 Session 数据将不起作用 - 因为它不会在实例之间共享。

Azure 负载平衡您的 HTTP 请求,并可能将每个客户端 HTTP 请求发送到不同的服务器实例。

如果要使用 Session 状态,则需要使用共享的会话状态提供程序,例如:

  • SQL 会话状态提供程序(尽管我认为这对 SQL Azure 有一些限制,因为它不能使用 SQLAgent 代码定期清除状态)
  • 演示 Azure 表会话状态提供程序(不受官方支持,有时报告为错误)
  • 最新的 AppFabric 会话状态提供程序(目前由 MS 推荐) - 请参阅http://appfabricdemos.codeplex.com/releases/view/65427
于 2011-05-11T09:28:37.917 回答
3

添加到 Stuart 的答案:AppFabric 缓存是缓存即服务,与任何虚拟机实例无关。该服务于几周前上线。AppFabric 团队提供了一个使用缓存的会话状态提供程序,只需要一个简单的 web.config 复制粘贴。

由于 Stuart 提到的原因,我不会依赖 SQL Azure 或表存储来进行会话缓存。

Windows Azure 平台培训工具包中有一个很好的动手实验室,名为“使用缓存服务构建 Windows Azure 应用程序” ——我会通过它来完成,因为其中一个主题是使用 AppFabric 缓存配置会话状态。

我在这个 SO answer中提供了更多信息。

于 2011-05-11T11:06:08.073 回答
1

为 Windows Azure 上的会话管理选择一种方式

AppFabric 缓存服务现已上线。

干杯。

于 2011-05-11T15:20:50.437 回答