2012-04-03 100 views
1

我收到此错误,并且我知道是什么原因造成的。造成这种情况的原因很多,但在我的情况下,问题在于machinekey因服务器而异(在Web场中),因此在机器间跳跃时,它不能解密视图状态和/或cookie。我已经解决了这个问题,但是,有些用户仍然在他们的机器上留下了一个cookie,用旧的机器键编写,他们得到这个错误。我需要一个很好的方式来处理这个错误,将它们注销然后重定向回登录页面。我试着在Application.error中的global.asax中放置一个异常处理程序,但是这似乎并没有引发这个错误。还有其他的错误发生,我已经过滤只捕获这个错误(通过查看异常)。我在web.config中设置了customErrors'on'。我该怎么做呢?asp.net无法验证数据

回答

1

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

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

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

<pages viewStateEncryptionMode="Never" /> 

最后,您可以禁用验证:

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

是 - 也许我不是清楚我的问题。我知道如何解决'无法验证数据'的问题,但我想要的是,当我将密钥放入machine.config文件中时,已经拥有cookie的用户无法获得该错误。我基本上要优雅地处理错误,并将它们重定向到登录页面(或其他页面)。 – 2012-04-04 02:54:57