验证viewstate时生成的Http异常

时间:2008-09-22 11:05:53

标签: asp.net

每当我点击回发控件时,我都会收到以下错误

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.

可能出现什么问题?

2 个答案:

答案 0 :(得分:3)

这里有一篇关于此的文章:http://blogs.msdn.com/tom/archive/2008/03/14/validation-of-viewstate-mac-failed-error.aspx

基本问题是在执行回发之前,您的页面尚未完成加载。

上面列出的文章中有几种不同的解决方案: 1.将enableEventValidation设置为false,将viewStateEncryptionMode设置为Never 2.将表单标记为已禁用,然后在加载完成后在脚本中启用它。 3.覆盖页面的渲染事件,将加密的视图状态和事件验证的隐藏字段放在窗体的顶部。

但主要问题是页面加载速度慢,应该修复(如果可能的话尽快)。应用上面的解决方案2也是一件好事,并且总是会触发满意的用户,无论加载速度多快,页面加载的点击速度都会更快: - )。

/安德烈亚斯

答案 1 :(得分:0)

我遇到了与自定义构建ASP.NET控件相同的问题,该控件在每个POST / GET请求中动态重新加载和重建。因此,发送POST请求的页面与收到响应的页面不同。 如果您使用任何自定义或数据绑定控件,请仔细查看它们在POST后的行为方式。