'验证viewstate MAC failed'问题,没有负载平衡,集群或服务器场

时间:2011-05-19 00:20:20

标签: .net viewstate mac-address

这是一个特别无益和困难的问题,我们正在经历许多网站。这些是相当高流量和复杂的网站,但它们都在一个盒子上 - 没有负载平衡或网络农场正在进行。很难可靠地重现,但任何关于潜在修复的想法都会受到赞赏。

只是要强调一下,这个问题非常间歇性地发生(可能是100个中的1个?)而且在这个阶段我无法隔离导致问题的网站上的任何特定行为。

我们能想到的唯一真正的解决方案是将网站转换为MVC,但正如您可以想象的那样,这是一项非常重要的任务。

站点是用.NET3.5构建的,显然是基于Web表单的,托管在运行Windows Server 2008标准的盒子上,32位,IIS7,以“经典”模式运行的应用程序池。

1 个答案:

答案 0 :(得分:1)

好的,我能够通过长时间保留登录表单然后填写表单并点击提交来重现此错误。在搜索“viewstate expire”并阅读更多内容之后,我已经开始在Web.config中手动设置元素了。

要添加到Web.config文件的特定元素是:

<system.web>
  <machineKey
    validationKey="EEF33150A048D162D22CB36E1CB9956B148C7A4E6999D0F05B53D416D7A16F83823DD626F501DD3549D3E5DCB473634739D0AD9A07F71560946498C943A7586D"
    decryptionKey="0E95F75864047EB6322EA7D5246F2C1175D77A1B016F293C3BAAD000299A3DC8"
    validation="SHA1"
    decryption="AES" />
</system.web>

validationKeydecryptionKey属性中的值只是随机生成的十六进制数,但需要分别为128和64字节。