Asp.net &引用;ViewState MAC验证失败";-这个错误意味着什么?

Asp.net &引用;ViewState MAC验证失败";-这个错误意味着什么?,asp.net,Asp.net,viewstate MAC验证失败。如果此应用程序由Web场或群集托管,请确保配置指定了相同的验证密钥和验证算法自动生成不能在群集中使用 顺便说一句,我正在使用localhost。默认情况下,ASP.NET将尝试验证viewstate。如果验证失败,它将抛出此异常。它可能无法验证的原因包括重新编译站点,然后在浏览器中刷新表单,或者某种服务器场/集群(但如果您使用的是localhost,我倾向于前者) 如果这真的妨碍了你,你可以关闭它,但是任何人都可以利用你的viewstate。这不是什么大不了的

viewstate MAC验证失败。如果此应用程序由Web场或群集托管,请确保
配置指定了相同的
验证密钥和验证算法<代码>自动生成
不能在群集中使用


顺便说一句,我正在使用localhost。

默认情况下,ASP.NET将尝试验证viewstate。如果验证失败,它将抛出此异常。它可能无法验证的原因包括重新编译站点,然后在浏览器中刷新表单,或者某种服务器场/集群(但如果您使用的是localhost,我倾向于前者)

如果这真的妨碍了你,你可以关闭它,但是任何人都可以利用你的viewstate。这不是什么大不了的事,只要你一开始不信任用户输入(你也不应该)。在web.config中:

<pages enableViewStateMac="false" />

检查-它几乎涵盖了发生这种情况的所有原因和一些解决方案

注意:以下内容通常是临时修复,但请注意这样做的安全影响

<pages validateRequest="false" enableEventValidation="false" viewStateEncryptionMode ="Never" />

这可能与应用程序回收有关。Viewstate由应用程序首次启动时生成的密钥签名。如果您的应用程序池在两个请求之间循环使用,则viewstate签名密钥将更改,并且以前的viewstate将无效,您将看到异常

为了排除这种情况,您可以在web.config中

另一件值得注意的事情是,如果您有一个大量使用数据绑定的页面,则viewstate可能非常大,并且该页面可能会在完成之前呈现给浏览器,如果您在该页面完全下载之前执行导致回发的操作,则可能会看到错误。这在.NET3.5SP1中得到了修复。您还可以通过将表单呈现为禁用状态,然后在客户端启用它,或者通过更改生成viewstate的位置来修复此问题。ASP.NET调试日志已关闭


如果仍然发生这种情况,您没有尝试使用javascript对viewstate表单字段进行更改,是吗?

您确实需要解释更多。给出代码,你要做的事情,等等。给出很多理由。每次我运行我的网站,这个错误有时会出现;所以我需要重新建立网站,它会正常运行。哇。首先,像这样的Viewstate错误与事件验证无关(这无法解决问题),其次,关闭事件验证是一个非常糟糕的主意。您无法控制它生成的输入进行检查。是的,很抱歉,我复制了错误的属性--我已编辑了答案。我想使用临时修复程序,但担心会影响安全性。“设置特定的机器密钥”链接已失效。