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) +195
System.Web.UI.LosFormatter.Deserialize(String input) +60
[HttpException (0x80004005): Authentication of viewstate failed. 1) If this is a cluster, edit 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() +101

[HttpException (0x80004005): Invalid_Viewstate
Client IP: 127.0.0.1
Port: 1893
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322)
ViewState: dDwxODY1NjIyNzA4O3Q8O2w8aTwwPjs+O2w8dDw7bDxpPDExPjtpPDEzPjs+O2w8dDx0PDtwPGw8aTwwPjs+O2w8cDzlhazlj7jlhoXpg6jlhazmlofkv53lr4Y75YWs5Y+45YaF6YOo5YWs5paH5L+d5a+GPjs+Pjs+Ozs+O3Q8dDw7cDxsPGk8MD47PjtsPHA85pmu6YCaO+aZrumAmj47Pj47Pjs7Pjs+Pjs+Pjs+vqqb2s1CQU9RlhOI9o607b+P3X4=
Http-Referer:
Path: /attachcs/upload.aspx.]
System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +447
System.Web.UI.Page.LoadPageViewState() +18
System.Web.UI.Page.ProcessRequestMain() +447

 

解决方法:在page指令中设置禁止mac(身份验证代码): <% @ page enableviewstatemac="false">

 视图状态消息身份验证代码 (MAC) 是一种身份验证标记(又称 校验值),当对消息同时应用身份验证方案和密钥时就会创建该代码。MAC 通过使用相同的密钥进行计算和验证。因此,MAC 仅能由预定的接收方验证。可以使用多种加密技术和算法来创建 MAC,如安全散列算法 (SHA)、消息摘要 5 (MD5) 算法或数据加密标准 (DES) 算法。

视图状态 MAC 功能用以防止客户发送含有恶意视图状态数据的请求。默认情况下,视图状态 MAC 功能通过使用 Machine.config 文件中的 enableViewStateMac="true" 标志启用。

要确定所遇到的问题是否与 MAC 有关,最简单的方式是将该功能关闭。为此,请将 enable ViewStateMac 标志设置为 False。如果不再遇到视图状态错误,则该问题与 MAC 有关。

你可能感兴趣的:(ASP.NET)