asp.net - 发生错误 - System.InvalidOperationException : Validation of Anti-XSRF token failed

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

我们正在使用 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/

相关文章:

javascript - 使用 jQuery 从 asp.net 响应中检索 JSON 值

c# - 如何在没有异步的情况下使用 HttpClient

c# - 如何在 ASP.net/C# 应用程序配置文件值中为值添加一个符号

c# - 下拉列表错误

c - malloc 显示红线

asp.net-mvc-2 - 将 IIS7 更新到 .NET 4.5 时出现 ASP.NET MVC 2 站点问题

entity-framework-6 - EF.BulkInsert 和 Glimpse - 不能很好地配合

asp.net - 使用Code First迁移发布我的数据库(程序包部署)

SQL 和 Visual Studios - 传递变量

elmah - HttpTaskAsyncHandler 和 HTTP 上下文