发生错误 - System.InvalidOperationException:Anti-XSRF令牌的验证失败

时间:2013-11-06 19:29:42

标签: asp.net visual-studio-2012 asp.net-4.5

我们正在使用ASP.Net 4.5和Visual Studio 2012构建应用程序,主页面包含Anti-XSRF代码。当我们开始使用VS中的应用程序时,代码就在那里,我们希望保留它,因为它似乎有助于保持。但是我们随机收到一个错误:

  

System.InvalidOperationException:Anti-XSRF令牌的验证失败。

这发生在没有回发的页面上,也发生在具有回发的登录页面上,但它是随机完成的。一个人最近提到他们已经登录了一个测试用户,让机器处于非活动状态一段时间,当他们返回时他们试图访问一个安全页面,被要求登录,登录为另一个用户,然后收到此错误。否则其他用户说当它们刚刚点击主页时就会发生这种情况,而主页也没有回发。

我无法找到任何解决此问题的方法,其他任何人都遇到此问题?

1 个答案:

答案 0 :(得分:6)

当页面呈现给浏览器时,当前用户名嵌入在__VIEWSTATE中。发生回发时,反XSRF逻辑会检查当前用户名是否与提交的__VIEWSTATE中嵌入的用户名匹配。因此,预计在工作流中间更改登录用户(使用回发)将导致错误。如果用户只是在网站上导航,则不应发生此错误。

如果检查服务器日志,您将看到用户确实正在对发生故障的页面执行回发。 XSRF逻辑已经以“if(IsPostBack)”检查为条件。您可以通过查看Site.master代码隐藏文件来自行验证。