我们正在使用 ASP.Net 4.5 和 Visual Studio 2012 构建一个应用程序,母版页包含 Anti-XSRF 代码。当我们开始在 VS 中使用该应用程序时,该代码就在那里,我们想保留它,因为保留它似乎很有帮助。然而我们随机得到一个错误:
System.InvalidOperationException: Validation of Anti-XSRF token failed.
这种情况发生在没有回发的页面上,也发生在有回发的登录页面上,但它是随机完成的。最近有人提到,他们以测试用户身份登录,让计算机处于非事件状态一段时间,当他们返回时,他们尝试访问安全页面,被要求登录,以另一用户身份登录,然后收到此错误。否则其他用户说当他们刚刚访问主页时就会发生这种情况,而主页又没有回发。
我环顾四周找不到任何解决方案,其他人也遇到这个问题吗?
最佳答案
当页面呈现到浏览器时,当前用户名嵌入到 __VIEWSTATE 中。当发生回发时,反 XSRF 逻辑会检查当前用户名是否与提交的 __VIEWSTATE 中嵌入的用户名相匹配。因此,预计在工作流程(带有回发)过程中更改登录用户将导致错误。如果用户只是在网站上导航,则不应发生此错误。
如果您检查服务器日志,您会发现用户确实正在对发生故障的页面执行回发。 XSRF 逻辑已经以“if (IsPostBack)”检查为条件。您可以通过查看 Site.master 代码隐藏文件来亲自验证这一点。
关于asp.net - 发生错误 - System.InvalidOperationException : Validation of Anti-XSRF token failed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19821076/