帮助!为什么我的IE用户会被随机注销?
ASP.NET MVC 2.0,这是我的授权码:帮助!为什么我的IE用户会被随机注销?
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Login(string username, string password, string returnUrl) {
if (ModelState.IsValid) {
// Attempt to login
var loginSuccessful = provider.ValidateUser(username, password);
if (loginSuccessful) {
FormsAuthentication.SetAuthCookie(username, true);
if (!String.IsNullOrEmpty(returnUrl))
return Redirect(returnUrl);
return RedirectToAction("Index", "Home");
}
}
return View(Language + "/Login", Vd);
}
差不多直默认身份验证。可以正常登录。但是,IE用户会随机自动注销,即使他们在网站上处于活动状态。其他浏览器正常工作。下面是来自web.config的表单认证:
<authentication mode="Forms">
<forms loginUrl="~/en/Account/Login" timeout="2880"/>
</authentication>
从哪里开始看这种情况?我发现了一个错误?
据我所见,一切似乎都很好,但是,您的问题可能与您使用Cookie的持续持续有关吗?我认为持久性cookie不会超时,这就是为什么您可能会使用它们。
尝试使用非持久的一个替代,并看看是否能工程:
FormsAuthentication.SetAuthCookie(username, false);
而且,感兴趣的其他几个注意事项:
- 我认为,在网络超时属性.config是在几分钟内指定的。您已指定超过2000分钟。
- 默认情况下,滑动过期是禁用的,所以在n分钟后它会超时。如果这不是您想要的,请在web.config中的
<forms/>
元素上添加slidingExpiration="true"
条目。
slideExpiration有什么缺点吗?也许表现?不知道... – Chaddeus 2010-07-15 12:06:20
嗨乍得 - 不,它不应该对性能有任何影响。 尽管如此,启用该功能后,用户在每次请求之后有n分钟时间才会话超时。随着它被禁用,他们有第一次请求n分钟。回顾我的回答,我认为你仍然可以使用一个持久性cookie(因此如果用户关闭浏览器,会话将被保留),以及一个slidingExpiration。 我想知道你的问题是由于使用持久性cookie还是由于超时时间太长而造成的。 希望这是有道理的! – 2010-07-16 08:00:22
感谢您的回答。事实证明这是与机器相关的,但我根据你的回答做了一些更改。非常感激。 – Chaddeus 2010-07-26 06:23:21
什么样的会话模式,你使用过程中或过程中?如果您正在使用非持久cookie进行应用程序池回收,则会话丢失。
IE中的一个新bug,好笑... – Ahmad 2010-07-15 09:40:43