我遇到了一个我正在管理的Web应用程序的问题。偶尔会出现以下错误的用户:ASP.NET应用程序每隔几分钟就会损坏视图状态
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.
问题是它不是一个集群 - 它是一台Windows 2003服务器。周围挖之后,似乎增加了的machineKey部分和一些额外的属性到页面在我的web.config指令解决这个错误:
<machineKey validationKey='MACHINE KEY SNIPPED'
decryptionKey='DECRYPTION KEY SNIPPED'
validation='SHA1'/>
<pages validateRequest="true" enableEventValidation="false">
在我的web.config改变这两样东西后,错误消失,但现在我有一个新问题 - 而不是一个错误,我的viewstate无效,应用程序只是“忘记”我的用户是谁,并将它们发送回登录页面。现在,用户正在浏览应用程序,然后他们意外地被发送到登录页面,即使他们已经登录了几分钟。虽然我不能强迫这种情况发生,但通常会在访问10-12个不同的页面时发生,因此经常发生。
我很想解决这个问题 - 是否有人知道还有什么可能导致单个服务器上的视图状态错误,或者我能做些什么来确保它的正确验证?
永远不要关闭事件验证。有一个非常狭窄的时间你想要做到这一点,并试图绕过导致你的应用程序池回收的东西不是其中之一。现在,如果攻击者知道他们在做什么,他们将能够触发事件以禁用页面上的隐藏控件。 – blowdart 2010-01-24 16:27:10
你在做网址重写吗?如果是这样的网址被设置为匹配页面,表单验证反对?使用相同的错误消息更改表单验证toasts查看状态。 – 2010-01-24 18:24:29
任何解决方案? – Kiquenet 2011-01-04 09:52:10