您的位置:首页 > 编程语言 > ASP

ASP.NET"无法验证数据"的解决方法

2008-05-13 10:21 519 查看
ASP.NET"无法验证数据"的解决方法
2008-04-02 12:04
最近的系统经常遇到这种情况:
无法验证数据。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Web.HttpException: 无法验证数据。

详细错误信息如下:

“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------

无法验证数据。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Web.HttpException: 无法验证数据。

源错误:

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

堆栈跟踪:

[HttpException (0x80004005): 无法验证数据。]
System.Web.Configuration.MachineKey.GetDecodedData(Byte[] buf, Byte[] modifier, Int32 start, Int32 length, Int32& dataLength) 196
System.Web.UI.LosFormatter.Deserialize(String input) 60

[HttpException (0x80004005): Authentication of viewstate failed. 1) If this is a cluster, edit <machineKey> configuration so all servers use the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster. 2) Viewstate can only be posted back to the same page. 3) The viewstate for this page might be corrupted.]
System.Web.UI.LosFormatter.Deserialize(String input) 118
System.Web.UI.Page.LoadPageStateFromPersistenceMedium() 102

[HttpException (0x80004005): Invalid_Viewstate
Client IP: 221.220.149.8
Port: 35829
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
ViewState: dDwxNDU0MzMyNDY7dDw7bDxpPDE Oz47bDx0PDtsPGk8Mz47aTw1PjtpPDc O2k8MTQ O2k8MTY O2k8MjE O2k8MzQ Oz47bDx0PHQ8cDxwPGw8RGF0YVRleHRGaWVsZDtEYXRhVmFsdWVGaWVsZDs O2w8dG5hbWU7dHNpZDs Pjs O3Q8aTw3PjtAPC0t6YCJ5oupLS075paw6Ze76LWE6K6vO agj ebruaSreaKpTvkuqTnrqHlnKjnur875aSn5LyX5Lqk6YCaO i9pueVjOiwjeaKpTvnpL7ljLrmnI3liqE7PjtAPDA7MjszOzU7Njs3Ozg7Pj47bDxpPDE Oz4 Ozs O3Q8dDxwPHA8bDxEYXRhVGV4dEZpZWxkO0RhdGFWYWx1ZUZpZWxkOz47bDx0bmFtZTt0c2lkOz4 Oz47dDxpPDEwPjtAPOS7iuaXpeW/q iurzvlqpLkvZPogZTmkq0754Sm54K56K d6aKYO iIquepuuWKqOaAgTvpk4Hot6/ov5DovpM76ZW/6YCU5a6i6L QO S6rOWfjuW3tOWjqzvnmoTlo6vmg4XmgIA757K 5b2p6K665Z2bO Wlpei/kOS6pOmAmjs O0A8MjY7Mjc7Mjg7Mjk7MzA7MTA3OzEwODsxMDk7MTEwOzExMTs Pjs Ozs O3Q8cDxwPGw8VGV4dDs O2w85aSn6LSn5Y N5omj6Lev6L655LiK5ryU4oCc5aSp5aWz5pWj6Iqx4oCdOz4 Oz47Oz47dDxwPHA8bDxUZXh0Oz47bDwxNDs Pjs Ozs O3Q8cDxwPGw8VGV4dDs O2w8Mjg7Pj47Pjs7Pjt0PHQ8cDxwPGw8RGF0YVRleHRGaWVsZDtEYXRhVmFsdWVGaWVsZDs O2w8YW5hbWU7YW5hbWU7Pj47Pjt0PGk8NT47QDxhZG1pbjvmtYvor5U757qi57u/54GvO S6pOeuoeWxgDvmnaXoh6rnvZHnu5w7PjtAPGFkbWluO a1i ivlTvnuqLnu7/nga875Lqk566h5bGAO adpeiHque9kee7nDs Pjs Ozs O3Q8QDA8cDxsPERvd25sZXZlbE1vZGU7PjtsPEZyZWVUZXh0Qm94Q29udHJvbHMuRG93bmxldmVsTW9kZSwgRnJlZVRleHRCb3gsIFZlcnNpb249MS42LjMuMjYwNzMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbDxUZXh0QXJlYT47Pj47Ozs Ozs Oz4 Oz4 O2w8Q2hlY2tCb3gxO0ZyZWVUZXh0Qm94Mjs PtVedNMPQAsq1me9qBgT6ptzpEvP
Http-Referer: http://www.hld122.com/web/adminihld/addNews.aspx Path: /web/adminihld/addNews.aspx.]
System.Web.UI.Page.LoadPageStateFromPersistenceMedium() 448
System.Web.UI.Page.LoadPageViewState() 18
System.Web.UI.Page.ProcessRequestMain() 447

--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:1.1.4322.2300; ASP.NET 版本:1.1.4322.2300

经过在网上搜索,并测试,找到三种解决“无法验证数据”问题的方法:
1、设置web.config文件:
找到

<pages validateRequest="false"/>

替换成

1

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

2、在出错的页面(**.aspx)修改代码成下面这样的:

<%@Page EnableViewStateMac="false">

3、修改machine.config文件(不推荐采用此方法):
  此文件位于:C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/CONFIG/machine.config,找到“enableViewStateMac="true"”,改成“enableViewStateMac="false"”
关于此问题的解释:
视图状态消息身份验证代码 (MAC) 是一种身份验证标记(又称校验值),当对消息同时应用身份验证方案和密钥时就会创建该代码。MAC 通过使用相同的密钥进行计算和验证。因此,MAC 仅能由预定的接收方验证。可以使用多种加密技术和算法来创建 MAC,如安全散列算法 (SHA)、消息摘要 5 (MD5) 算法或数据加密标准 (DES) 算法。
视图状态 MAC 功能用以防止客户发送含有恶意视图状态数据的请求。默认情况下,视图状态 MAC 功能通过使用 Machine.config 文件中的 enableViewStateMac="true" 标志启用。
要确定所遇到的问题是否与 MAC 有关,最简单的方式是将该功能关闭。为此,请将 enable ViewStateMac 标志设置为 False。如果不再遇到视图状态错误,则该问题与 MAC 有关。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐