2009-12-10 281 views
1

运行ASP.NET webforms运行应用程序工作正常。当应用程序闲置4到5分钟时,会发出此错误:视图状态MAC验证失败

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.

这怎么解决?

+0

投票关闭,确切的重复的[CryptographicException:填充是无效的,无法删除和验证视图状态MAC失败](http://stackoverflow.com/questions/1821243/cryptographicexception-padding-is-invalid-and-不能被删除和验证o) – 2010-09-20 18:03:06

+0

不幸的是,这既是ASP.NET的一个bug,也是一个功能。 – 2010-09-20 18:04:17

+0

我已经将页面设置添加为false和机器密钥。两个应用程序中的相同机器密钥仍然显示相同的错误 – Razack 2015-11-14 08:41:43

回答

0

修改你的web.config与此元素:

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

所需的任何详细信息,请参阅ASP.NET Forums topic

+0

好先生solairaja我会尝试这个感谢的回应 – 2009-12-10 06:18:59

+0

让我知道它是否工作或太工作 – solairaja 2009-12-10 07:11:36

+0

好吧我会告诉你好 – 2009-12-10 08:07:16

2

这个免费的在线工具:http://aspnetresources.com/tools/machineKey产生下machineKey元素web.config文件中的system.web元素。 这里是什么它生成一个例子:

<machineKey validationKey="1619AB2FDEE6B943AD5D31DD68B7EBDAB32682A5891481D9403A6A55C4F91A340131CB4F4AD26A686DF5911A6C05CAC89307663656B62BE304EA66605156E9B5" decryptionKey="C9D165260E6A697B2993D45E05BD64386445DE01031B790A60F229F6A2656ECF" validation="SHA1" decryption="AES" /> 

一旦你看到这个在你的web.config,错误本身突然有道理。 你所得到的错误说

"ensure that configuration specifies the same validationKey and validation algorithm".

当你看这个machineKey元素,突然间你可以看到它在说什么。

在适当位置修改system.web元素下的pages元素可能不是必需的。这避免了与这些属性相关的安全问题。


通过在你的web.config“硬编码”这个值,即asp.net使用序列化和反序列化视图状态的钥匙留在服务器场中是相同的,无论哪个服务器捡起来。您的加密变得“便携”,因此您的视图状态变得“便携”。

我只是猜测也许非常相同的服务器(不在农场)有这个问题,如果由于任何原因它忘记了它的密钥,由于任何级别上的重置擦除它出。这也许就是为什么你会在空闲时间后看到这个错误,并尝试使用“陈旧”页面。

+0

切勿使用公共资源获取机器密钥。 – Marcel 2017-05-03 09:31:47

0

这不是你的问题,但它可能会帮助别人。确保你张贴回同一页面。检查表单标记上的操作,并使用Firefox Live HTTP标题查看浏览器请求的URL。

我遇到过这个问题,因为我发回了一个具有相同名称但路径不同的页面。