如何以编程方式检测会话过期

时间:2012-10-05 07:13:38

标签: asp.net session

我搜索谷歌并找到了许多以编程方式检测会话到期的答案。这是我看到每个人都使用它的代码

global.asax
---------------
protected void Session_Start(object src, EventArgs e)
{
if (Context.Session != null && Context.Session.IsNewSession)
{
    string sCookieHeader = Request.Headers["Cookie"];
    if (null != sCookieHeader && sCookieHeader.IndexOf("ASP.NET_SessionId") >= 0)
        Response.Redirect("/Session/Timeout");
}
}

我对上面的代码几乎没有疑问 1)当会话到期时,Context.Session将如何不为空? 2)这一行的含义是什么Request.Headers["Cookie"];

寻找好的讨论。感谢

2 个答案:

答案 0 :(得分:1)

您可以在global.asax文件中使用Session_End方法

void Session_End(Object sender, EventArgs E) {
    // Clean up session resources
}

答案 1 :(得分:0)

  

1)当会话到期时,Context.Session将如何不为空?

当用户使用过期的会话回到服务器时,您的代码会触发。 此代码中的会话对象是开始的新空会话。 请记住,您在Session_Start中,而不是在Session_End中。

  

2)此行的含义是什么Request.Headers [“Cookie”];

Cookie包含会话的ID。如果用户正在请求资源,提供会话ID,并且触发了Session_start,则几乎可以肯定这意味着会话ID指的是过期的会话对象。然后会向用户显示特定消息。