asp.net无法验证数据

时间:2012-04-03 16:19:52

标签: c# asp.net global-asax

我收到了这个错误,我知道是什么原因造成的。原因很多,但在我的情况下,问题是machinekey因服务器而异(在Web场中),因此当它从一台机器跳到另一台机器时,它无法解密viewstate和/或cookie。我已经解决了这个问题,然而,有些用户仍然在他们的机器上留下了一个用旧机器密钥编写的cookie,他们收到了这个错误。我需要一个很好的方法来处理这个错误,将它们记录下来,然后重定向回登录页面。我已经尝试在Application_error中的global.asax中放置一个异常处理程序,但是这似乎没有触发此错误。还有其他错误发生,我已经过滤以仅捕获此错误(通过查看异常)。我在web.config中有customErrors'on'。我该怎么做?

1 个答案:

答案 0 :(得分:1)

有几种方法可以解决此问题。最好的整体解决方案是在每个服务器的machine.config中明确设置加密和解密密钥:

<machineKey validationKey="JFDSGOIEURTJKTREKOIRUWTKLRJTKUROIUFLKSIOSUGOIFDS..." decriptionKey="KAJDFOIAUOILKER534095U43098435H43OI5098479854" validation="SHA1" />

另一种选择是完全禁用ViewState的加密,但这样做会失去一些安全性:

<pages viewStateEncryptionMode="Never" />

最后,您可以停用验证:

<pages enableViewStateMac="false" ... />