【发布时间】:2010-08-24 14:43:23
【问题描述】:
我有一个 asp.net 应用程序,它似乎忘记了用户在一段时间后登录。
I'm using the membership provider and when opt to "remember" the log in it remembers it during the session.我什至可以关闭浏览器,重新启动并返回,它仍然会登录。但过了一会儿它就忘记了,它似乎在任何旧时间都会这样做。我曾经登录过,当我进入一个新页面时,它被注销了。
其他奇怪的是:
- 在我的开发机器上,它会永远记住登录。即使在 IIS 重新启动并重新编译后,它也会按预期记住我的登录信息。
- 我在同一台服务器上有另一个应用程序可以永久记住登录。我比较了它们处理登录的方式,它们似乎是相同的。
这让我相信问题与服务器有关,或者可能与应用程序中的某些问题有关,与登录和会员代码没有直接关系。我可以看什么?
编辑: 使用 Fiddler 查找 cookie,它们似乎没问题。 今天创建的身份验证 cookie 将在 2 周后过期,这就是我的配置设置方式: expires=2010 年 9 月 6 日星期一 01:47:51 GMT
编辑: 问题似乎是应用程序池正在回收,并且身份验证cookie变得无效,因为机器密钥已更改,因此无法再读取它。解决方案是在 web.config 中添加 machineKey 段并提供静态机器密钥。
【问题讨论】:
-
记住我功能是基于cookie的。所以我会诊断 cookie 生命周期。
-
我看了一下cookie,它的到期时间是未来2周。
-
只有一台生产机器还是负载均衡?
-
是的,它只有 1 台服务器。我正在查看答案之一推荐的应用程序回收和机器密钥。但是,我不确定为什么我会在一台服务器上看到这个问题,而不是在另一台服务器上。两者都定期回收应用程序池。