首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >验证viewstate失败

验证viewstate失败
EN

Stack Overflow用户
提问于 2009-12-10 05:59:38
回答 4查看 1.8K关注 0票数 1

运行ASP.NET webforms,运行应用程序可以正常工作。当应用程序空闲4到5分钟时,它将产生以下错误:

验证viewstate失败。如果此应用程序由网络场或群集承载,请确保配置指定相同的validationKey和验证算法。AutoGenerate不能在集群中使用。

如何解决这一问题?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-12-10 06:07:20

使用以下元素修改web.config:

代码语言:javascript
复制
<pages validateRequest="false" 
       enableEventValidation="false" 
       viewStateEncryptionMode ="Never" />

如果需要更多信息,请参阅ASP.NET论坛主题

票数 -1
EN

Stack Overflow用户

发布于 2011-08-23 03:41:27

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

代码语言:javascript
复制
<machineKey validationKey="1619AB2FDEE6B943AD5D31DD68B7EBDAB32682A5891481D9403A6A55C4F91A340131CB4F4AD26A686DF5911A6C05CAC89307663656B62BE304EA66605156E9B5" decryptionKey="C9D165260E6A697B2993D45E05BD64386445DE01031B790A60F229F6A2656ECF" validation="SHA1" decryption="AES" />

一旦您在web.config中看到了这一点,错误本身就突然变得有意义了。你所犯的错误是

“确保配置指定相同的validationKey和验证算法”。

当您查看这个machineKey元素时,突然可以看到它在说什么。

在这种情况下,修改system.web元素下的pages元素可能是不必要的。这避免了与这些属性相关的安全问题。

通过在web.config中“硬编码”这个值,asp.net用于序列化和反序列化视图状态的键保持不变,无论服务器场中的哪个服务器获取它。您的加密变得“可移植”,因此您的viewstate变得“可移植”。

我也只是猜测,如果由于任何原因,它“忘记”了它所拥有的密钥,那么可能是同一台服务器(而不是在一个农场中)出现了这个问题,因为它在任何级别上都会被清除掉。这也许就是为什么您在空闲期间之后看到此错误,并尝试使用“陈旧”页面的原因。

票数 2
EN

Stack Overflow用户

发布于 2009-12-10 07:53:21

请参阅http://blogs.msdn.com/tom/archive/2008/03/14/validation-of-viewstate-mac-failed-error.aspx

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1878900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档