今天在开发时出错:
原因:在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中没有自动开启,所以出错这个错误!