帮助!为什么我的IE用户会被随机注销?

帮助!为什么我的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> 

从哪里开始看这种情况?我发现了一个错误?

+0

IE中的一个新bug,好笑... – Ahmad 2010-07-15 09:40:43

据我所见,一切似乎都很好,但是,您的问题可能与您使用Cookie的持续持续有关吗?我认为持久性cookie不会超时,这就是为什么您可能会使用它们。

尝试使用非持久的一个替代,并看看是否能工程:

FormsAuthentication.SetAuthCookie(username, false); 

而且,感兴趣的其他几个注意事项:

  • 我认为,在网络超时属性.config是在几分钟内指定的。您已指定超过2000分钟。
  • 默认情况下,滑动过期是禁用的,所以在n分钟后它会超时。如果这不是您想要的,请在web.config中的<forms/>元素上添加slidingExpiration="true"条目。
+0

slideExpiration有什么缺点吗?也许表现?不知道... – Chaddeus 2010-07-15 12:06:20

+0

嗨乍得 - 不,它不应该对性能有任何影响。 尽管如此,启用该功能后,用户在每次请求之后有n分钟时间才会话超时。随着它被禁用,他们有第一次请求n分钟。回顾我的回答,我认为你仍然可以使用一个持久性cookie(因此如果用户关闭浏览器,会话将被保留),以及一个slidingExpiration。 我想知道你的问题是由于使用持久性cookie还是由于超时时间太长而造成的。 希望这是有道理的! – 2010-07-16 08:00:22

+0

感谢您的回答。事实证明这是与机器相关的,但我根据你的回答做了一些更改。非常感激。 – Chaddeus 2010-07-26 06:23:21

什么样的会话模式,你使用过程中或过程中?如果您正在使用非持久cookie进行应用程序池回收,则会话丢失。