System.Web.Configuration.MachineKeySection.GetDecodedData中的“无法验证数据”异常是什么意思

时间:2009-04-29 15:33:03

标签: asp.net exception

我已经开发了一个测试localhost Cassini的网站,它一直运行良好,现在当我部署到我的网络服务器时,我间歇性地得到以下错误:

  

Global.Application_Error错误:请求期间发生异常:   http://....blah.aspx无法验证数据。在   System.Web.Configuration.MachineKeySection.GetDecodedData(Byte [] buf,   字节[]修饰符,Int32开始,Int32长度,Int32& DATALENGTH)          在System.Web.UI.ObjectStateFormatter.Deserialize(String inputString)HttpApplication.RaiseOnError => EventHandler.Invoke =>   Global.Application_Error

这是在我的global.asax中捕获的。我四处搜寻但找不到原因。这个异常是在非常简单和小的webforms中抛出的。该网站未托管在网络农场中。

2页似乎间歇性地导致此错误,其中一个在ViewState中存储bool,但除此之外不会进行修改。

以前有人遇到过这个吗?

5 个答案:

答案 0 :(得分:11)

http://dotnetcoderoom.wordpress.com/2008/11/07/unable-to-validate-data-aspnet-error/

原因: 其基本原因是加密和解密视图状态数据时密钥的差异。假设一个asp.net使用key1呈现一个页面并将页面状态保存在视图状态,同时将asp.net的密钥更改为key2,现在当某个服务器端事件将在页面上发生时,viewstate将被解密并且此错误将发生为由于加密密钥不同,旧视图状态现在无效。

当你打开一个页面时,可能会发生这种情况,之后就会发生一些事件。

解 修复web.config文件中的密钥,以便只使用一个密钥来加密和解密视图状态数据。

欲了解更多信息,请访问:

http://www.experts-exchange.com/Programming/Programming_Languages/Dot_Net/ASP_DOT_NET/Q_21321364.html

http://support.microsoft.com/default.aspx?scid=kb;en-us;Q312906

答案 1 :(得分:8)

我的asp.net网络应用程序中“无法验证数据System.Web.Configuration.MachineKeySection.EncryptOrDecryptData”。我清除了我的饼干,异常停止了。

答案 2 :(得分:4)

尝试将机器密钥添加到web.config以查看是否可以修复错误

http://aspnetresources.com/tools/keycreator.aspx

答案 3 :(得分:0)

有同样的错误。所有web.config中的machinekey和decryptionKey都相同,但有些web.config有

    <add key="aspnet:UseLegacyEncryption" value="true" />
    <add key="aspnet:UseLegacyFormsAuthenticationTicketCompatibility" value="true" />

等没有。从所有web.config中删除了此密钥。我不认为解决方案是删除密钥,但在所有web.config中都是相同的

答案 4 :(得分:0)

在我的情况下,我有两个Web应用程序(一个是非常旧的,另一个是我刚创建的),尽管具有相同的机器密钥设置,但在一个应用程序中生成的票证在另一个应用程序中不可用。通过在compatibilityMode="Framework20SP2"中添加machineKey作为web.config节点的参数来解决这个问题。