簡體   English   中英

Session.Abandon()不會立即放棄會話

[英]Session.Abandon() does not abandon the session straight away

在我的ASP.NET Web應用程序中,我在Page_Load()調用Session.Abandon() Page_Load() 我希望這會立即放棄會話,下次我引用HttpContext.Current.Session應該創建一個新會話。 但是,在Global.asax中的Session_EndSession_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM