验证视图状态MAC失败

时间:2010-01-26 22:29:50

标签: asp.net viewstate load-balancing

昨天在我们的一个网站上讨论了这个问题。首先,该站点托管在Web场环境中,目前我已在两个节点(2节点环境)上向web.config添加了静态machineKey。这解决了这个问题,现在一切正常。

这提出了以下问题: 为什么在此环境中运行的所有其他站点都不需要这个(web.config中的machineKey)。

我检查了事件日志,以确保我们在其他网站上没有相同的问题,一切看起来都很好。我还确认应用程序池不会经常回收,并且关于应用程序池设置的一切正常。

我能想到的唯一解释是该网站由一个节点呈现,后续的帖子返回另一个节点 - 这让我相信问题在于负载均衡器。我们的基础架构人员告诉我,关于负载均衡器应该是一切都应该如此,我建议的情况不会发生。

我是否错过了这里显而易见的或者还有其他我可以考虑的事情吗?

提前致谢

2 个答案:

答案 0 :(得分:1)

基本上,是的,你是对的 - 当你在负载均衡器中没有正确配置“Sticky Sessions”并且用户回发被发送到另一台服务器时,你通常会在Web场环境中看到这一点。

为了公平对待您的网络人员,可能会将大多数请求发送到一台服务器,但此应用程序正在倾斜使用情况,以便将请求通常发送到另一台服务器 - 但您应该在所有站点上看到这些请求,除非交通模式完全不同。

另一个可能的原因是您的页面加载时间太长,并且用户在页面完全加载之前回发 - 我设法让我的一个网站使用几个远程广告调用埋在页面加载的中途,或者用户在页面渲染和回发之间等待太长时间,并且loadbalancer上的会话超时,因此它认为这是一个新的请求。

答案 1 :(得分:0)

如果您正在使用Web场环境,则需要同步web.config中指定的计算机键值。此外,您还需要确保machine.config文件中的计算机密钥值也在两者之间同步。