ASP.NET表单对请求的身份验证失败。原因:提供的票证已过期

ASP.NET表单对请求的身份验证失败。原因:提供的票证已过期,asp.net,.net,authentication,forms-authentication,Asp.net,.net,Authentication,Forms Authentication,我在事件日志中多次遇到此错误,用户已注销 事件代码:4005 事件消息:请求的表单身份验证失败。原因:提供的票证已过期。 活动时间:2011年3月10日下午3:35:22 活动时间(UTC):2011年10月3日8:35:22下午 事件ID:fc2f70cc85014b0ca7dbb01471617b66 事件顺序:3392 事件发生率:1 活动详情代码:50202 想法: 我没有使用网络表单 我不认为应用程序池是回收的 我比较了几个事件中的进程ID,结果是相等的 我的机器密钥不是自动生成的

我在事件日志中多次遇到此错误,用户已注销

事件代码:4005
事件消息:请求的表单身份验证失败。原因:提供的票证已过期。
活动时间:2011年3月10日下午3:35:22
活动时间(UTC):2011年10月3日8:35:22下午
事件ID:fc2f70cc85014b0ca7dbb01471617b66
事件顺序:3392
事件发生率:1
活动详情代码:50202

想法:

  • 我没有使用网络表单
  • 我不认为应用程序池是回收的
  • 我比较了几个事件中的进程ID,结果是相等的
  • 我的机器密钥不是自动生成的

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

我认为默认的超时时间是20分钟,滑动过期,因此如果用户通过身份验证,并且在某个时间点20分钟内没有访问您的站点,那么他们的票证将过期。如果设置为绝对过期,则它将在发出后的X分钟内过期,其中X是您的超时设置

您可以在
/configuration/system.web/authentication/forms

下的
web/machine.config
中设置超时和过期策略(例如滑动、绝对) windows安装.net framework的安全更新后,您将遇到此问题。
只需修改web.config文件中的配置部分,并切换到其他cookie名称。

这是一篇来自Microsoft的好文章,涵盖了各种情况和场景。

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


这显示了如何生成MachineKey。

我得到了相同的错误,在我们的例子中,它是由负载平衡器引起的。我们需要确保持久性设置为源IP。否则,登录表单由一台服务器打开,由另一台服务器处理,这将无法正确设置身份验证cookie。可能这有助于其他人

我将此babble识别为asp.net并修复了标记。您是否找到了此问题的解决方案?相关问题:您尝试过任何解决方案吗?超时设置为40。我们看到的问题快到1分钟。我更改了cookie名称…并解决了我的问题。@许多用户都遵从我的说法,他们在设置为30分钟的身份验证超时之前很快就注销了。我检查了事件日志,发现应用程序池并没有得到回收,但有您在问题中多次提到的错误。我的服务器管理员最近安装了更新,其中包括与此答案中提到的内容相关的更新。您能告诉我您是否只对那些使用持久cookie的用户或所有面临问题的用户有问题,因为我们没有持久表单身份验证选项。对我来说,这就是解决方案。对于那些想知道如何设置cookie名称的人,请参见此处的答案