Asp.net viewstate MAC验证失败

Asp.net viewstate MAC验证失败,asp.net,viewstate,load-balancing,Asp.net,Viewstate,Load Balancing,昨天在我们的一个网站上遇到了这个问题。首先,该站点托管在web场环境中,目前我已在两个节点(2节点环境)的web.config中添加了一个静态machineKey。这解决了问题,现在一切正常 这提出了以下问题: 为什么在这个环境中运行的所有其他站点都不需要这个(web.config中的machineKey) 我检查了事件日志,以确保我们在其他网站上没有相同的问题,并且一切正常。我还确认,应用程序池没有太频繁地回收,应用程序池设置方面一切正常 我能给出的唯一解释是,站点由一个节点呈现,随后的回发转

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

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

我检查了事件日志,以确保我们在其他网站上没有相同的问题,并且一切正常。我还确认,应用程序池没有太频繁地回收,应用程序池设置方面一切正常

我能给出的唯一解释是,站点由一个节点呈现,随后的回发转到另一个节点——这让我相信问题在于负载平衡器。我们的基础设施人员告诉我,关于负载平衡器,一切都是应该的,我提议的场景不会发生

我错过了这里显而易见的事情,或者还有什么我可以考虑的吗?
提前感谢

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

基本上,是的,您是对的-当负载平衡器中没有正确配置“粘性会话”并且用户回发被发送到不同的服务器时,您通常会在web服务器场环境中看到这一点

为公平起见,大多数请求可能被发送到一台服务器,但此应用程序正在改变使用方式,使得请求常常被发送到另一台服务器——但您应该看到,在所有站点中,除非流量模式完全不同


另一个可能的原因是,要么你的页面加载时间太长,用户在页面加载完成之前就发帖了——我已经设法让我的一个网站这样做了,在页面加载过程中,有两个远程广告呼叫被埋没了,或者用户在页面呈现和回发之间等待的时间太长,loadbalancer上的会话超时,因此它认为这是一个新的请求。

@Mitchel我理解这背后的逻辑,但我不明白的是,为什么其他站点在没有在web.config中指定机器键值的情况下工作正常,并且如果machine.config在节点之间同步,这就是其他站点工作的原因,为什么我们在web.config上也指定了需要它的站点。+1对于Sticky Sessions想法-我让网络人员检查如何为这个特定站点配置会话持久性。我非常怀疑页面加载太慢或者在回发之前没有完全加载-这是一个单页“感兴趣的注册”类型的站点,只有几个文本框字段,没有繁重的图形(使用CSS精灵减少http请求和总图像大小)、会话持久性或“粘性会话”在负载平衡器上设置为0秒,以便根据流量负载在服务器之间切换请求。解释了为什么我们的其他网站在没有web.config中定义的静态machineKey的情况下运行良好,因为它们只停留在一个节点上-感谢您的建议。没问题,我自己也犯过类似的错误;)