会话超时在asp.net mvc 4 C#中不起作用。 为什么?

对于我的网站,我在web.config文件中配置了1周的登录会话超时

         

这是登录的代码

  [AllowAnonymous] [HttpPost] public ActionResult Login(string Login, string Password) { // empty passwords are not allowed if (Password == "") return Redirect(Request.UrlReferrer.ToString()); bool LoginResult = WebSecurity.Login(Login, Password, true); return Redirect(Request.UrlReferrer.ToString()); } 

我登录,关闭浏览器并再次打开它去我的网站 – >用户已登录。我关闭浏览器,等待一段时间(约30分钟)转到我的网站 – >用户已注销。 为什么? 会话应存储7天,但我们甚至没有30分钟。 Whan可能是问题的根源?

编辑1 主要想法是我想在几天内回到网站并仍然使用登录用户打开它

可能,您的IIS已配置为20分钟的TimeOut

IIS会话超时更改为1周 24小时,我希望这将解决您的问题。

请参阅此

根据设计,超时的最大值设置为24小时。 查看Microsoft支持论坛

要实现更大的超时窗口,可以考虑按照@Marc的建议在SQL维护会话状态。

尝试将会话状态移动到Sql( 此处链接 )。 这应该持久化IIS重启/应用程序池回收等。

网站Session.Timeout仅在小于应用程序池会话超时值时才有效; 因为每当达到应用程序池会话超时值时,将重新启动该特定应用程序池。

http://www.codeproject.com/Articles/113287/Why-Session-Timeout-is-not-working-for-your-websit

当应用程序空闲(没有请求一段时间)时, IIS可能会将其关闭。 这会破坏所有Sessions

Authentication将其数据存储在数据库中,从而在重新启动后仍然存在。