验证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回退时的行为。