我搜索谷歌并找到了许多以编程方式检测会话到期的答案。这是我看到每个人都使用它的代码
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"];
寻找好的讨论。感谢
答案 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指的是过期的会话对象。然后会向用户显示特定消息。