3

我为一个非常简单的提交表单创建了一个新的 asp.net 网络表单(带有母版页)应用程序。我使用 Visual Studio 2012 创建 Web 项目,并在 site.master.cs 上添加了防止跨站点脚本伪造的代码。

然而,在测试中,如果用户签名并处于非活动状态几分钟,然后单击注销按钮,我们会收到此错误(在 site.master.cs 上)

Validation of Anti-XSRF token failed.

       Exception Details: System.InvalidOperationException: Validation of Anti-XSRF token failed.

Source Error: 
Line 61:                     || (string)ViewState[AntiXsrfUserNameKey] !=    

  (Context.User.Identity.Name ?? String.Empty))

 Line 62:                 {

 Line 63:                     throw new InvalidOperationException("Validation of Anti-XSRF token failed.");


   Line 64:                 }

 Line 65:             }

我们可以做些什么来避免这种情况?

4

1 回答 1

1

这完全取决于你。随心所欲地处理错误。在您的情况下,您可能重新启动了Web服务器并且您的视图状态已死或在不知情的情况下这样做了。

你在用欧文吗?如果您使用的是 Owin,则会有一个错误会弄乱 Session 和 Viewstate。在对用户进行身份验证之前,请创建一个 Session 变量(任何东西),例如 Session["Blah"] = test.

只需添加代码来处理错误(将用户重定向到另一个页面)。

于 2014-02-08T04:55:03.327 回答