验证viewstate时生成Http异常
时间:2020-03-06 14:32:05 来源:igfitidea点击:
每当我单击回发控件时,都会出现以下错误
HttpException (0x80004005): Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.
我没有使用Web场或者群集服务器。我什至尝试将页面属性EnableViewStateMac设置为false,但它更改了错误消息,说明
The state information is invalid for this page and might be corrupted.
可能是什么问题?
解决方案
这里有一篇有关此的文章:http://blogs.msdn.com/tom/archive/2008/03/14/validation-of-viewstate-mac-failed-error.aspx。
基本问题是执行回发之前页面尚未完成加载。
上面列出的文章中提供了几种不同的解决方案:
1.将enableEventValidation设置为false并将viewStateEncryptionMode设置为Never
2.将表单标记为已禁用,然后在加载完成后在脚本中启用它。
3.覆盖页面的"渲染事件",以将"加密的视图状态"和"事件验证"的隐藏字段放在表单顶部。
但是主要的问题是页面加载缓慢,应该将其修复(如果可能,应尽快解决)。应用上面的解决方案2可能也是一件好事,并且总是会有触发快乐的用户,无论页面加载的速度如何,它们都会更快地点击该页面:-)。
/安德烈亚斯
我在使用自定义生成ASP.NET控件时遇到了相同的问题,该控件被动态地重新加载并在每个POST / GET请求上重新生成。因此,发送POST请求的页面与接收响应的页面不同。
如果我们使用任何自定义或者数据绑定控件,请仔细查看它们在POST回退时的行为。