关闭

验证视图状态 MAC 失败

标签: stringasp.netexception算法.netserver
1106人阅读 评论(0) 收藏 举报
分类:

今天在开发时出错:

原因:在Asp.net中想和Asp一样,将一个页的Form值到达另一页去处理,出错了以下错误

代码:a.aspx页中
function CheckItem()
{
    var url="b.aspx";
    document.form1.action = url;
    document.form1.submit();
}

<form id='form1' runat="server" method="post">
  <asp:TextButton  id="txt_name" runat="server" value="abc" />
</form>
b.aspx.cs页中
private void InitItem()
{
    string name = Request["txt_name"];
}

验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。

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

异常详细信息: System.Web.HttpException: 验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。

源错误:

[没有相关的源行]

源文件: c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/chinamobilecard/3dbb6c23/2ef444c/App_Web_nekzrvyt.10.cs    行: 0

堆栈跟踪:

[HttpException (0x80004005): 无法验证数据。]
System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt, Byte[] buf, Byte[] modifier, Int32 start, Int32 length, Boolean useValidationSymAlgo) +353
System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) +136

[ViewStateException: 无效的视图状态。
Client IP: 127.0.0.1
Port:
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322)
ViewState: MtyJjwMoAUL26uFr/ag9wuds00UGEdARYOwvl+Kn3oGmdIA4K6YPAoGgLsgLRhB6rT2T2TCC0CKfjekDyaT4LFw4kIaGTELuRgp+49YsRi+bUV7SiyoUU5ofw2Fbj0teQnjGH/T/9+78VjcCqXiBGAfDbL02Wjo1rDQdY4ugtkr3/Jrx4hpt891VPyF6LAtT4BO+Ghlcdn7rFp0r0mco37G7YVr3xpEjRCiaOTOtxc69ySEmv+vvywUfjJoRu4rIK5t60ZGc9w3PAsrnqt3H/h9N77r/oDjdB96O3psC6G3WKt10ap4cBAiuKMnJxWF1g01pg3iHx/KTWIwh1KRpz9+0IoIgeop29i4lGTNMwXb4DPN+oaYK4XDBsTIVhPbMa80h2vmwdoqjMNvhyKV5G2CAgzItyFI30f0dMpcV2GRcz7J+YruM/u7hsK/38QIWk+GZTSly83MOsfpDChyjBOUi/B5R/TPsPWRYitgGq5MXKe52mpqcSZ+XtYf6JlO3R2F+gzcvnzmDImJVA0JyPpKYxa6ZhdFbI90jp22r7Ttai2OmuWnxzhTHml3oFqSCSND+idqpD0wsh+Bw64vbnVV7PQQ26kAWWA14SJD3vXJmI+1sjQ2FJ2WXamBbsqZOwgdGrdcBdkx+LkeLJVHUjfperTd/3RqWCPnGhLSIbML0vv0KpB/GESrZATuVs1cinVS3R+M7oBPL0wGu0YGUItRmxpvJidAnW89h3Gp41xuSWYM2L0MAlzpnBrxZqSSYF/DYJukHyfz6LWgfFL6i90aJyWRjQ+5EalE8P79jGdmy+ohj5V8m3lzKUvrMe/9ZwA3A9E4l6ZUSgNpGKHD48wktZ7ydIGmAhx...]

[HttpException (0x80004005): 验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。]
System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) +119
System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) +235
System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState) +5
System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState) +37
System.Web.UI.HiddenFieldPageStatePersister.Load() +222
System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +80
System.Web.UI.Page.LoadAllState() +35
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +8008
System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +202
System.Web.UI.Page.ProcessRequest() +85
System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) +20
System.Web.UI.Page.ProcessRequest(HttpContext context) +110
ASP.photo_create_aspx.ProcessRequest(HttpContext context) in c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/chinamobilecard/3dbb6c23/2ef444c/App_Web_nekzrvyt.10.cs:0
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +390
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +65
 

解决方法:
在b.aspx 页的<@page>中加入 EnableViewStateMac="false"
原因是:因为ViewState在.net 2005中没有自动开启,所以出错这个错误!
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:45853次
    • 积分:630
    • 等级:
    • 排名:千里之外
    • 原创:14篇
    • 转载:10篇
    • 译文:0篇
    • 评论:11条
    文章分类