2012-10-05 47 views
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"];

尋找好的討論。感謝

+0

在Session_Start上,Session.IsNewSession將始終爲真。你想要完成什麼,因爲我認爲你正走向錯誤的道路。 –

+0

如果你想連接到會話結束檢查這一點。 http://stackoverflow.com/questions/621744/how-to-handle-session-end-in-global-asax –

回答

0

1)當會話過期則Context.Session怎麼會不爲空?

當用戶回到具有過期會話的服務器時,會觸發您的代碼。 此代碼中的會話對象是開始的新空會話。 記住你在Session_Start中,而不是在Session_End中。

2)這一行的含義是什麼Request.Headers [「Cookie」];

該cookie包含會話的ID。如果用戶正在請求資源,則會觸發提供會話ID和Session_start,這幾乎肯定意味着會話ID引用了過期的會話對象。然後向用戶顯示特定的消息。

1

可以使用Session_End方法在Global.asax文件

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