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

Par*_*osh 3 asp.net asp.net-4.5 visual-studio-2012

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

__PRE__

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

我无法找到任何解决方案,其他人有这个问题吗?

Lev*_*evi 6

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

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

  • 也可以通过在将用户重定向到登录页面之前调用 FormsAuthentication.SignOut() 来纠正此问题。 (2认同)