【问题标题】:ASP.NET 4.0 MAC validation failureASP.NET 4.0 MAC 验证失败
【发布时间】:2023-03-15 19:56:01
【问题描述】:

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

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

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

2) 尝试单击离开登录页面的任何链接会导致“视图状态 MAC 验证失败...”错误。

2a) 例外情况是,单击将我带到登录页面(我已经在的页面)的链接可以正常工作

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

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

Page.ViewStateUserKey = Session.SessionID;

如果我注释掉这一行,我可以打开 MAC 并且应用程序非常满意。任何人都可以阐明发生了什么吗?

【问题讨论】:

  • 这是发生在 Web 服务器集群上,还是在本地运行时也会发生?

标签: c# asp.net validation webforms


【解决方案1】:

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

当您想要生成简单链接时,请考虑直接在您的标记中使用 ...,而不是使用 Response.Redirect。这将导致浏览器向指定资源发出普通 HTTP GET 请求,不受任何当前页面特定日期的影响。

【讨论】:

    猜你喜欢
    • 2010-11-27
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多