ASP.NET 网络表单应用程序中用户的负载平衡和会话状态丢失

load balancing and loss of session state for user in ASP.NET web forms application

所以我使用了一个机器密钥生成网络应用来生成一个 machineKey 元素。然后我把它放在 web.config 的适当位置。服务器管理员部署到两台服务器并将负载均衡器指向它们。

无论出于何种原因,当我访问 preprod 负载平衡站点时,它工作正常。我登录,在现场做事,世界上一切都很好。但是,有一个用户反复访问该站点并遇到问题,症状是会话状态丢失。我查看了他的消息,基本上是登录成功,将项目存储在会话状态,重定向到页面,检查返回为 null 的项目,然后给他消息。

为什么我没有遇到这种情况而他却有?更重要的是,我如何确保他不会一直丢失会话状态?

找到问题所在,但不幸的是,根据问题没有提供足够的信息,可能会得出这样的结论:

1) This issue was only impacting Internet Explorer as far as can be figured out.
2) The hostname included an underscore in the name (server administrator given)

在这种情况下,Internet Explorer 可以正确处理。主机名包含使其无效的下划线。由于这个事实,Internet Explorer 拒绝创建 cookie(至少在默认情况下是这样。不确定您是否可以覆盖 Internet Explorer 中的行为)。我的猜测是 Firefox 和 Chrome 只是视而不见并相应地工作。

在请求并收到 URL 的重命名后,Internet Explorer 又可以工作了。