错误4005 表单身份验证失败 - 提供的票据已过期。

9

我正在使用ASP.NET 2.0运行一个网站。 每隔一段时间(每天100多个用户中超过10次),我会收到此错误:Forms身份验证失败-提供的票证已过期。

这是我的web.config片段:

<authentication mode="Forms">
    <forms name=".CLLSAUTH" loginUrl="login.aspx" protection="All" path="/" timeout="60" />
</authentication>

我查看了几个解决方案,有人提到会话超时,但我的配置中也是60分钟。还有两件事,我没有运行WebFarm,并且应用程序在出现错误的时间周围也没有被回收。有什么线索吗?

这由应用程序池的回收、会话超时和身份验证超时控制。 - Aaron Fischer
1
为什么这个问题被关闭了?它是关于编程的问题。 - Rebecca
@junto。嗯,我不记得了。那时候(将近2年前)我没有留下便条。我想我可以重新打开。 - edosoft
@edosoft 这绝对是一个相关的问题。我认为它应该重新开放。 - Brett
@Brett Ok被提名重新开放。 - edosoft
1个回答

3

我不确定您的问题是什么...在这种情况下,当用户打开浏览器超过一个小时时,他们的身份验证cookie会超时。下一次他们向服务器发送请求时,就会出现问题。

尝试在表单元素中添加slidingExpiration="true"。这样,每次用户访问服务器时,超时时间都会重新开始计算。

这可能也是因为IIS回收了您的工作进程。您需要检查日志,看看在此错误发生之前是否发生了这种情况。

如果您的应用程序在不同的服务器上运行,那么在身份验证cookie中的机器密钥可能会被拒绝,因为它起源于另一台服务器。但从您的问题来看,似乎您没有在Web Farm上运行。


1
我的问题是,如何阻止这个错误的发生。并且我已经澄清了,我没有使用Webfarm,也没有IIS工作进程回收。我会尝试您的滑动过期建议。谢谢。 - edosoft

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接