ASP.NET 4.0 MAC验证失败

时间:2014-02-03 17:55:31

标签: c# asp.net validation webforms

首先,我要提一下,我对C#和ASP.NET 4.0都很陌生。这个问题的解决方案可能是基本的,所以不要犹豫提出基本问题。

由于<page enableViewStateMac="false">(不是我的错),我继承了自动安全测试失败的ASP.NET 4.0应用程序。当然,我打开了它。在那时,出现了一种非常具体的行为模式:

1)我可以导航到应用程序登录页面

2)尝试点击离开目标网页的任何链接会导致“验证viewstate MAC failed ...”错误。

2a)例外情况是点击链接到我的登陆页面(我已经在的页面)工作得很好

我应该提到通过Response.Redirect(...)导航到其他ASP。如果我直接在导航栏中输入网址(http://dummyhost.com:12345/Enroll.aspx而不是http://dummyhost.com:12345/LandingPage.aspx,然后点击注册),我就可以成功导航到某个页面。

在母版页的Page_Init()方法中,我设置了:

Page.ViewStateUserKey = Session.SessionID;

如果我注释掉这一行,我可以打开MAC,应用程序非常高兴。任何人都可以阐明正在发生的事情吗?

1 个答案:

答案 0 :(得分:1)

最可能的原因是某些特定于登录页面的数据正在提交给服务器并通过对Response.Redirect的调用持久存在,因此注册页面会尝试读取特定于登录页面的数据并使请求失败因为数据无法正确解释。

请考虑使用&lt; a href =&#34; Enroll.aspx&#34;&gt; ...&lt; / a&gt;而不是使用Response.Redirect。当您想要生成简单链接时,直接在您的标记中。这将导致浏览器向指定资源发出一个vanilla HTTP GET请求,而不包含任何当前页面特定的日期。