由于循环负载平衡器,用户正在退出网站

Col*_*son 5 c# asp.net asp.net-mvc load-balancing

我们的运营商已在我们的门户网站上实施了循环负载均衡器,这似乎导致了一些我无法深究的问题.

我能够识别出我们所在的服务器,当我们浏览我们停留在服务器A上的网站时.如果我离开它5分钟并尝试另一个页面,我将被推送到服务器B,注销并显示登录页面.

我已经让他们确保machine.config中的MachineKey在两台服务器上是相同的,并且我在本地测试了会话没有被使用 - 我可以在本地完全关闭会话,它仍然有效.我已经在两台服务器上验证了它在域上创建了一个ASPXAUTH cookie,因此我们应该在两台服务器上都被认证为 - 但每次更换服务器时都会丢失我的身份验证.

关于什么可能导致退出的任何想法?我猜这是我对ASPXAUTH如何工作的误解.

Max*_*xam 2

会话与表单身份验证分开处理。这里对此有一个很好的解释。

负载平衡环境中表单身份验证失败的最常见原因是 MachineKey 元素缺乏同步。您已经声明您已经让服务器运营商确保 MachineKey 同步,但是您自己是否以某种方式验证了这一点?所有网络服务器上都是这种情况吗?从之前与几个商业网络主机的交易中,我发现(不幸的是)很难相信他们的保证的表面价值。

另一件需要检查的事情是所有主机上的 FormsAuthentication 配置(超时、路径、名称等)是否相同。

所有主机上的补丁级别是否相同?您可能想查看此处提到的兼容性开关是否适用于您的情况。

假设托管设置正确,也许您的页面上有初始化代码,如果不满足某些条件,该代码会导致您退出?

尝试查看服务器日志并跟踪失败的页面请求期间涉及的 HTTP 请求的序列。这可能会产生一条线索。

编辑:本对表单身份验证问题进行故障排除的指南非常详细,而且非常有帮助:表单身份验证故障排除