运行ASP.NET webforms,运行应用程序可以正常工作。当应用程序空闲4到5分钟时,它将产生以下错误:
验证viewstate失败。如果此应用程序由网络场或群集承载,请确保配置指定相同的validationKey和验证算法。AutoGenerate不能在集群中使用。
如何解决这一问题?
发布于 2009-12-10 06:07:20
使用以下元素修改web.config:
<pages validateRequest="false"
enableEventValidation="false"
viewStateEncryptionMode ="Never" />如果需要更多信息,请参阅ASP.NET论坛主题
发布于 2011-08-23 03:41:27
这个免费的在线工具:http://aspnetresources.com/tools/machineKey在machineKey文件中的system.web元素下生成一个web.config元素。下面是它生成的一个例子:
<machineKey validationKey="1619AB2FDEE6B943AD5D31DD68B7EBDAB32682A5891481D9403A6A55C4F91A340131CB4F4AD26A686DF5911A6C05CAC89307663656B62BE304EA66605156E9B5" decryptionKey="C9D165260E6A697B2993D45E05BD64386445DE01031B790A60F229F6A2656ECF" validation="SHA1" decryption="AES" />一旦您在web.config中看到了这一点,错误本身就突然变得有意义了。你所犯的错误是
“确保配置指定相同的validationKey和验证算法”。
当您查看这个machineKey元素时,突然可以看到它在说什么。
在这种情况下,修改system.web元素下的pages元素可能是不必要的。这避免了与这些属性相关的安全问题。
通过在web.config中“硬编码”这个值,asp.net用于序列化和反序列化视图状态的键保持不变,无论服务器场中的哪个服务器获取它。您的加密变得“可移植”,因此您的viewstate变得“可移植”。
我也只是猜测,如果由于任何原因,它“忘记”了它所拥有的密钥,那么可能是同一台服务器(而不是在一个农场中)出现了这个问题,因为它在任何级别上都会被清除掉。这也许就是为什么您在空闲期间之后看到此错误,并尝试使用“陈旧”页面的原因。
发布于 2009-12-10 07:53:21
请参阅http://blogs.msdn.com/tom/archive/2008/03/14/validation-of-viewstate-mac-failed-error.aspx
https://stackoverflow.com/questions/1878900
复制相似问题