2010-12-08 76 views
0

我得到以下例外情况每隔几天:视图状态异常

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

很多信息,如果你想挖掘它:http://stackoverflow.com/search?q=Validation+of+viewstate+MAC+failed(我不知道真正的答案是什么。/) – Greg 2010-12-08 16:24:39

回答

1

要详细一点上Brian的点,原因页面,这是“相当大”的经验问题是,这些网页有时渲染速度非常缓慢,以至于在ViewState完成下载之前按下“提交”按钮,导致它出现损坏并生成错误。

唯一的解决方案,这是:

  1. 禁用ViewState中完全

  2. 使用脚本只允许提交后,页面完全加载

  3. 确保ViewState的是尽可能接近页面的顶部尽可能(我认为如果您的网站是公开的对SEO不利)。

您可以尝试通过查看加载的速度页面与异常的时间之间是否存在任何关联来证明这种情况。使用像LogParser这样的工具可以解决这个问题。