ASP.NET窗体身份验证对请求失败。原因:提供的故障单已过期

时间:2011-03-10 22:16:28

标签: asp.net .net authentication forms-authentication

我在事件日志中多次收到此错误,并且用户已注销。

  

活动代码:4005
  事件消息:请求的表单身份验证失败。原因:提供的故障单已过期   活动时间:3/10/2011 3:35:22 PM
  活动时间(UTC):3/10/2011 8:35:22 PM
  事件ID:fc2f70cc85014b0ca7dbb01471617b66
  事件顺序:3392
  事件发生:1
  活动详细信息代码:50202

思想:

  • 我没有使用网络表单。
  • 我不认为应用程序池是回收。
  • 我比较了几个事件中的进程ID,它是相同的。
  • 我的机器密钥不是AutoGenerate。

5 个答案:

答案 0 :(得分:7)

听起来就像您的表单身份验证票证已过期时会出现错误。您的机票的超时期限是多少?是设置为滑动还是绝对过期?

我认为超时的默认值是20分钟,滑动到期,因此如果用户通过身份验证,并且在某些时候没有访问您的网站20分钟,他们的票证将会过期。如果设置为绝对到期,它将在X发出超时设置后X分钟到期。

您可以在web/machine.config

下的/configuration/system.web/authentication/forms设置超时和到期政策(例如,滑动,绝对)

答案 1 :(得分:7)

AS Scott在这里提到http://weblogs.asp.net/scottgu/archive/2010/09/30/asp-net-security-fix-now-on-windows-update.aspx 在Windows安装.net框架的安全更新后,您将遇到此问题。  只需修改web.config文件中的配置部分,然后切换到另一个cookie名称。

答案 2 :(得分:4)

这是Microsoft http://www.iis.net/learn/troubleshoot/security-issues/troubleshooting-forms-authentication的一篇很好的文章,涵盖了各种案例和场景。

答案 3 :(得分:1)

从其他计算机使用web.config后,我遇到了同样的问题。该问题与无效MachineKey有关。为了解决这个问题,我修改了web.config以使用我服务器的正确MachineKey

MSDN blog post显示了如何生成MachineKey。

答案 4 :(得分:0)

我遇到了同样的错误,在我们的例子中,这是由负载平衡器引起的。我们必须确保将持久性设置为“源IP”。否则,登录表单将由一台服务器打开,并由另一台服务器处理,这将无法正确设置身份验证cookie。也许这可以帮助别人