[英]Session.Abandon() does not abandon the session straight away
在我的ASP.NET Web應用程序中,我在Page_Load()
調用Session.Abandon()
Page_Load()
。 我希望這會立即放棄會話,下次我引用HttpContext.Current.Session
應該創建一個新會話。 但是,在Global.asax中的Session_End
和Session_Start
處理程序上放置斷點表示在頁面完成呈現之前不會調用它們。
所以有兩個問題:
1)為什么?
2)一旦調用了Session.Abandon(),如何在頁面生命周期內繼續使用HttpContext.Current.Session
。
提前致謝!
http://msdn.microsoft.com/en-us/library/ms524310(v=vs.90).aspx
查看鏈接頁面上的備注部分。 看起來會話對象僅排隊等待刪除,並且在代碼完成運行之前不會被刪除。
這是我的解決方案:
private void PurgeSession()
{
try
{
Session.Clear();
}
catch (Exception) { }
try
{
Session.Abandon();
}
catch (Exception) { }
try
{
Session.RemoveAll();
}
catch (Exception) { }
try
{
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId")
{Expires = DateTime.Now.AddYears(-1)});
}
catch (Exception) { }
}
這實際上是軌道轟擊選項。
一些信息來自: http : //www.dotnetfunda.com/articles/article1395-how-to-avoid-the-session-fixation-vulnerability-in-aspnet-.aspx
Session.Abandon()實際上等待頁面呈現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.