我的网站(ASP.Net 4.0 C#)托管在具有多个实例的 Azure 服务器上。我的会话状态模式是“InProc”。不知何故,它不能在 Azure 实例上运行,它不能正确维护状态。请指教。
问候维韦克
如果您有多个实例并且正在使用 InProc 会话,则 Session 数据将不起作用 - 因为它不会在实例之间共享。
Azure 负载平衡您的 HTTP 请求,并可能将每个客户端 HTTP 请求发送到不同的服务器实例。
如果要使用 Session 状态,则需要使用共享的会话状态提供程序,例如:
添加到 Stuart 的答案:AppFabric 缓存是缓存即服务,与任何虚拟机实例无关。该服务于几周前上线。AppFabric 团队提供了一个使用缓存的会话状态提供程序,只需要一个简单的 web.config 复制粘贴。
由于 Stuart 提到的原因,我不会依赖 SQL Azure 或表存储来进行会话缓存。
Windows Azure 平台培训工具包中有一个很好的动手实验室,名为“使用缓存服务构建 Windows Azure 应用程序” ——我会通过它来完成,因为其中一个主题是使用 AppFabric 缓存配置会话状态。
我在这个 SO answer中提供了更多信息。