我每隔几天就会收到以下例外情况:
System.Web.HttpException (0x80004005): Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster. ---> System.Web.UI.ViewStateException: Invalid viewstate.
问题是我有一个机器密钥集,我也只使用一个服务器(即没有集群)。那么为什么会发生这种异常呢?我唯一能想到的是我不断重置IIS服务器,但我无法理解为什么这是一个问题。你们经常看到这个例外吗?
作为参考,我的'system.web'下面存在以下内容:
<machineKey validationKey="Blah1" decryptionKey="Blah2" validation="SHA1" decryption="AES" />
答案 0 :(得分:1)
为了详细说明Brian的观点,“相当大”的页面遇到问题的原因是这些页面有时会渲染得太慢,以至于在ViewState完成下载之前按下“提交”按钮,这会导致它出现损坏并生成错误。
唯一的解决方案是:
完全禁用viewstate
使用脚本仅在页面完全加载后启用提交
确保ViewState尽可能靠近页面顶部(如果您的网站是公开的,我认为这对SEO很不利)。
您可以尝试通过查看加载的速度页与异常的时间之间是否存在任何关联来证明这种情况。使用像LogParser这样的工具可以帮助解决这个问题。