sql sessionState超时与表单身份验证超时

Nil*_*Pun 2 asp.net

如果会话空闲了5分钟,我想在登录页面上显示"你的会话已经过期".

Sql会话状态和表单身份验证超时的超时值应该是什么:

  1. 相同?
  2. 会话状态>表单超时
  3. 表格超时>会话时间.

理想情况下,如果有人能够解释上述差异,将不胜感激.

目前,我的代码如下所示,即使在登录重定向为空闲5分钟后,Session ["SessionID"]也不是Null:

On Session_Start()
 Session["SessionID"] = Guid.NewGuid();
Run Code Online (Sandbox Code Playgroud)

在LogOn.cshtml上:

 @{
        string sessionExpiredMsg = string.Empty;

        HttpContext ctx = HttpContext.Current;
        if (ctx.Session["SessionID"] == null)
        {
            sessionExpiredMsg = "Your session has expired. Please re-login again.";
        }
    }
@
Run Code Online (Sandbox Code Playgroud)

在web.config上:

<sessionState
timeout=5....

<authentication mode="forms"
 timeout=5....
Run Code Online (Sandbox Code Playgroud)

谢谢.

lnu*_*lnu 5

  • 会话状态超时意味着您的asp.net会话将在x分钟后到期.这并不意味着您不再进行身份验证.
  • 表单超时意味着在x分钟后,系统将提示您再次登录(不再进行身份验证).

如果您的会话状态超时持续时间超过表单超时,则不会出现问题,因为一旦您再次登录,如果未过期,您将检索最后一个.