我为一个非常简单的提交表单创建了一个新的asp.net Web表单(带有母版页)应用程序。我使用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: }
我们可以做些什么来避免这种情况?
答案 0 :(得分:1)
这完全取决于你。随意处理错误.. 在您的情况下,您可能重新启动了Web服务器,并且您的视图状态已经死亡或者没有明知故障。
你正在使用Owin吗?如果您使用的是Owin,则会出现一个混淆Session和Viewstate的错误。在验证用户之前,创建一个Session变量(任何东西),例如Session [“Blah”] = test。只需添加代码即可处理错误(将用户重定向到另一个页面)。