【问题标题】:Intermittent issue of HttpAntiForgeryException on Production only仅在生产中出现 HttpAntiForgeryException 的间歇性问题
【发布时间】:2018-05-22 11:55:36
【问题描述】:

我在生产服务器上间歇性地收到 AntiForgery 错误。 详情:-

  • 问题仅出现在登录页面,重新加载后可以正常工作
  • 问题是间歇性的
  • 使用表单认证,站点部署在单台服务器上。

System.Web.Mvc.HttpAntiForgeryException (0x80004005): 防伪 cookie 令牌和表单字段令牌不匹配。 制作步骤:- * 登录网站 * 长时间打开或关闭浏览 * 1-2小时后再次打开登录页面.. 您可能会收到此防伪令牌错误“防伪 cookie 令牌和表单字段令牌不匹配。” 但它不能保证我们会遇到错误。我们只是间歇性地收到错误,一旦用户尝试再次登录,就会得到解决。

我尝试了很多选项,但无法解决问题。

【问题讨论】:

  • 机器密钥未配置,因为站点部署在单台服务器上

标签: c# asp.net-mvc csrf antiforgerytoken


【解决方案1】:

这个错误的原因可能是 1.您已在新位置设置服务器或 2.您在应用程序仍在使用某些客户端时重置了 IIS(因为重置时它会为该会话生成一个新令牌)

【讨论】:

  • 生产站点出现问题,应用程序池在此期间未回收.. 其间歇性.. 登录到站点关闭浏览器并在 1-2 小时后再次打开登录页面.. 您可以得到这个防伪错误..但不能保证你会得到这个错误
  • @ashishmishra 您是否检查了事件日志以验证这一点?您可能没有配置回收,但未处理的异常将导致一个。另一种可能性是 AV 导致文件被视为已修改,从而导致回收。
  • @Andy:登录帖子操作由 Antiforgery 属性修饰,我检查了服务器上的登录,但根据日志,即使第一行登录操作也未执行,并且日志中出现 Antiforgery 异常。这意味着我们的登录方法不是罪魁祸首。根据日志操作 login(post) 被调用。我将尝试检查服务器上的事件日志。还有一件事.. 每段代码都包装在 try catch 块中,并在 catch 块中记录器,因此如果发生异常,它将被记录在任何位置。
  • 访问 API 的身份验证令牌年龄是多少?我认为它已经过期并且它给出了这个例外。尝试在令牌中间件上添加日志。
  • 身份验证令牌是 cookie。它的 cookie 和隐藏字段在服务器验证的表单中。它的年龄是会话。所以在浏览器打开之前有效。
猜你喜欢
  • 1970-01-01
  • 2019-04-16
  • 2011-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-30
相关资源
最近更新 更多