对于我的网站,我在web.config文件中配置了1周的登录会话超时
<system.web>
<httpRuntime />
<!-- Session keeps for 7 days -->
<sessionState timeout="10080"></sessionState>
<authentication mode="Forms">
<forms loginUrl="~/" timeout="10080" slidingExpiration="true"/>
</authentication>
<!-- Configuration end -->
</system.web>
以下是登录代码
[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());
}
我登录,关闭浏览器并再次打开它转到我的网站 - &gt;用户已登录。 我关闭浏览器,等待一段时间(约30分钟)去我的网站 - &gt;用户已注销。 为什么?会话应存储7天,但我们甚至没有30分钟。 Whan可能是问题的根源吗?
编辑1 我的主要想法是,我希望在几天内返回该网站并仍然以登录用户
打开它答案 0 :(得分:12)
可能您的IIS
已配置为TimeOut
的20分钟。
将IIS
会话超时更改为 1周 24小时,我希望能解决您的问题。
参考this
按照设计,超时的最大值设置为24小时。查看Microsoft支持forum
要实现更大的超时窗口,您可以考虑按SQL
维护会话状态,如@Marc所示。
答案 1 :(得分:3)
尝试将会话状态转换为Sql(link here)。这应该会持续IIS重启/应用程序池回收等。
答案 2 :(得分:2)
网站Session.Timeout仅在小于应用程序池会话超时值时才有效;因为每当达到应用程序池会话超时值时,将重新启动该特定应用程序池。
http://www.codeproject.com/Articles/113287/Why-Session-Timeout-is-not-working-for-your-websit
答案 3 :(得分:1)
当应用程序处于空闲状态(一段时间内没有请求)时,IIS
可能会将其关闭。这会破坏所有Sessions
。
Authentication
将数据存储在数据库中,因此可以在重新启动后继续存在。