【发布时间】:2017-07-22 13:28:48
【问题描述】:
我正在开发 ASP.Net MVC 应用程序。
我们使用了 sessionState 模式 SQLServer,我将超时设置为 20 分钟。
<sessionState mode="SQLServer"
sqlConnectionString="data source=127.0.0.1;user id=sa;password=sa"
cookieless="false"
timeout="2" />
Web 配置中的代码是这样的。
我也设置了登录页面。
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
现在,当会话到期时,我想将用户导航到登录页面。
我检查了很多东西,但我无法理解它究竟是如何工作的?以及如何在会话过期时导航用户登录页面?
它在 InProc 模式下工作。我以同样的方式使用它,并且用户在会话过期时被重定向到登录。
但我无法在 SQLServer 模式下完成同样的事情。
我无法理解我错过了什么?
我查了Session State,还发现Session timeout handled in SQLServer Mode
编辑:- 每当为该会话执行另一个 http 请求时,我想将用户重定向到登录页面。
【问题讨论】:
-
会话采用 滑动 超时。每次您再次访问您的网站时,会话超时都会重置。
-
@ChrisPratt 好的。我应该如何处理这种情况?是不是因为SQLServer模式?
-
这就是我要说的。你不能。当用户处于活动状态时,会话永远不会超时,无论是 20 分钟还是 2 小时。如果用户空闲,并且会话超时,则下一个请求将简单地启动一个新会话。您最可能想要做的只是将身份验证设置为在 20 分钟后过期。这必然会强制用户在 20 分钟后重新登录,因为这不滑动。
标签: asp.net sql-server asp.net-mvc session