.net ';viewstate MAC验证失败';问题,没有负载平衡,群集或服务器场

.net ';viewstate MAC验证失败';问题,没有负载平衡,群集或服务器场,.net,viewstate,mac-address,.net,Viewstate,Mac Address,这是一个特别没有帮助和困难的问题,我们正在经历一些网站。这些都是相当高的流量和复杂的网站,但它们都在一个盒子上——没有负载平衡或web场。很难可靠地复制,但任何关于潜在修复的想法都将受到欢迎 需要强调的是,问题的发生是断断续续的(可能是百分之一?),在这个阶段,我无法找出导致问题发生的任何特定行为 我们能想到的唯一真正的解决方案是将站点转换为MVC,但正如您所想象的,这是一项非常艰巨的任务 网站内置.NET3.5,显然是基于web表单的,托管在运行Windows Server 2008标准、32

这是一个特别没有帮助和困难的问题,我们正在经历一些网站。这些都是相当高的流量和复杂的网站,但它们都在一个盒子上——没有负载平衡或web场。很难可靠地复制,但任何关于潜在修复的想法都将受到欢迎

需要强调的是,问题的发生是断断续续的(可能是百分之一?),在这个阶段,我无法找出导致问题发生的任何特定行为

我们能想到的唯一真正的解决方案是将站点转换为MVC,但正如您所想象的,这是一项非常艰巨的任务


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

好的,我可以通过长时间离开登录表单,然后填写表单并点击提交来重现此错误。在搜索“viewstate expire”并阅读更多内容后,我尝试在我的Web.config中手动设置元素

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

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


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

您需要提供有关导致错误的更多详细信息。这个问题太宽泛了,我想不出什么来。我经常在不正确的跨页面发布中看到这个错误。相信我,我正在尽我所能获取额外的信息。如果有人修改ViewState,MAC验证也会失败(这就是为什么要首先使用MAC的原因)。您是否排除了故障不是由于扫描工具或用户故意操作造成的?应用程序可能会在类似“\uuu VIEWSTATE=1”或“\uu VIEWSTATE=…”的情况下失败。与内部生成的错误不同,这是一个不同的问题;i、 e.不仅仅是在查看内容时。我们从客户的用户群中获得了足够的信息,可以排除任何故意操纵viewstate的行为。是否有可能用户只是在初始响应中完成整个viewstate之前快速提交表单?好的,我可以通过长时间保留登录表单,然后填写表单并点击提交来重现此错误。搜索“viewstate expire”并阅读更多内容后,我尝试在我的Web.config中手动设置
元素,如果它有效,我会将其作为答案。