2011-03-10 199 views
19

我在事件日志中多次出现此错误,并且用户已注销。ASP.NET窗体身份验证请求失败。原因:提供的票已过期

事件代码:4005
事件消息:表单认证失败的请求。原因:提供的票已过期。
事件时间:3/10/2011下午3点35分22秒
事件时间(UTC):3/10/2011下午8时35分22秒
事件ID:fc2f70cc85014b0ca7dbb01471617b66
事件序列:3392
事件发生:1个
事件详细信息代码:50202个

思考:

    我不使用web表单
  • 我不认为应用程序池正在回收。
  • 我比较了几个事件中的进程ID,它是相等的。
  • 我的机器密钥不是AutoGenerate。
+0

除非Stack Overflow中的某个人开发了ESP,否则你应该解释你正在使用的软件,以及可能的操作系统。这也可能有助于以问题的形式来描述你的问题。 – pjmorse 2011-03-10 22:20:49

+1

我认识到babble为asp.net并修复了标签。 – x0n 2011-03-10 22:22:52

+0

你有没有找到这个解决方案? – AMember 2013-10-10 15:56:16

回答

6

听起来像您的表单身份验证票证过期时会出现的错误。什么是你的机票超时时间?它是设置为滑动还是绝对到期?

我相信超时的默认值是20分钟,滑动过期,所以如果用户获得认证,并在某些时间点没有击中您的网站20分钟,他们的票将过期。如果它被设置为绝对到期,那么它将在X发布后的X分钟内到期,其中X是您的超时设置。

您可以设置超时和过期策略(例如滑动,绝对)在web/machine.config/configuration/system.web/authentication/forms

+6

超时设置为40.我们看到的问题最快为1分钟。 – Quotient 2011-03-11 02:12:26

5

斯科特提到这里http://weblogs.asp.net/scottgu/archive/2010/09/30/asp-net-security-fix-now-on-windows-update.aspx 后的.NET Framework安装的Windows安全更新,你会遇到这个问题。 只需修改web.config文件中的配置节并切换到其他cookie名称即可。

+0

我更改了cookie名称......并修复了我的问题。 – contactmatt 2014-01-01 19:14:37

+0

@contactmatt许多用户在认证超时设置为30分钟之前很快就注销了他们的注销。我检查了事件日志,发现应用程序池未得到回收,但出现了多次提及的错误。我的服务器管理员最近安装了更新,它包含与此答案中提到的相关的更新。你能告诉我你是否有问题,只有那些使用持久性cookie的用户或所有面临问题的用户都有问题,因为我们没有持久性表单身份验证选项。 – Sandeep 2016-05-13 04:09:33

0

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

This MSDN blog post shows how to generate a MachineKey。