0

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

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"];

寻找好的讨论。谢谢

4

2 回答 2

1

您可以使用Session_Endglobal.asax 文件中的方法

void Session_End(Object sender, EventArgs E) {
    // Clean up session resources
}
于 2012-10-05T07:35:02.613 回答
0

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

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

2)这行Request.Headers["Cookie"]是什么意思;

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

于 2012-10-05T08:42:55.683 回答