我们在我们在Orchard之上构建的应用程序中使用了默认会话状态(在proc中)。现在管理层决定在其间安装负载均衡器。为了使我们的会话仍然有效,我想到了进程外会话状态。但是,我有点困惑,我是否应该在我使用会话的特定模块的'Orchard.web'模块中启用它。
我试图搜索Orchard是否支持其他方式的proc会话,或者它应该像普通的asp.net应用程序一样。
任何帮助将不胜感激
答案 0 :(得分:1)
首先 - 我非常确定Orchard团队建议不惜一切代价避免会话状态。任何具有会话状态的东西(根据定义)有状态,这使得向外扩展更难。但是,假设你无法避免它:
1)它只是一个ASP.NET应用程序,适用常规规则。确保在app config中设置了相同的机器密钥,配置您选择的会话状态机制(SQL /状态服务器)并在web.config中配置适当的值。
<强>然而强>
2)标准的ASP.NET会话状态实现锁定效果很差。这可能会导致您的网页出现错误的响应问题。在session state performance上查看这个优秀的问题(和相关帖子)。您应该自己评估是否需要锁定会话状态。我们必须完全删除会话状态,以便为我们的应用程序提供可接受的性能(并且我们从未回头或发现会话对缓存的合理论据
答案 1 :(得分:1)
扩展的经典解决方案是使用粘性会话。大多数负载均衡器都具有此设置,这将允许您继续使用inproc会话。如果你没有计划自动缩放,那么你的LB背后总会有固定数量的服务器,那么你应该仔细考虑这个解决方案。
退出proc可能会给你带来一些麻烦,比如将你在会话中放入的所有类标记为Serializable。