2012-11-06 41 views

回答

9

簡短版本,編號 服務器檢測客戶端是否已關閉瀏覽器沒有可靠的方法。這只是Web開發的異步模式的本質。

長版,如果對你來說真的很重要, 在後臺發送一個普通帖子到你的網站的頁面中放入一些javascript,並設置一個服務器端代理或服務,如果它不接收這些常規的「心跳」信號,它將處理這些會話。

您可以將JavaScript回傳到頁面的unload()事件中,但不要依賴它,它並不總是觸發。

+0

爲心跳設置控制器操作或處理程序的替代方法是將會話超時設置爲在心跳間隔後一分鐘。然後瀏覽器會自動處理它自己的會話,因爲cookie會過期。 –

+0

請不要執行javascript方法,因爲這會阻止超時功能執行其中一項關鍵安全功能 - 如果用戶離開PC,則將其簽出。我保證,如果你這樣做,並在您的網站上進行專業的安全審計,缺少超時將被標記爲一個問題。 – elexis

0

我覺得cookies可以更好地在這裏滿足您的要求進行會話管理。

這意味着會話數據不應該被存儲在服務器上,並 應該與你通話,讓你不必擔心 清除服務器上的數據。

+0

Cookie與瀏覽器的關閉事件有什麼關係?如果用戶關閉他們的瀏覽器,則什麼都不會被解僱。 cookie將在那裏,在客戶端,什麼都不做。 –

+0

@RenéWolferinkL:這意味着會話數據不應該存儲在服務器上,應該與您的電話一起使用,以便您不必擔心清除服務器上的數據。 –

1

默認情況下,每當關閉瀏覽器時都會發生這種情況,這不僅僅適用於ASP.NET。它適用於大多數具有會話狀態的服務器端編程語言。基本上,添加的任何未指定過期日期的cookie都將在瀏覽器關閉時被刪除。

如果這不適用,那麼當您關閉一個選項卡時,由於選項卡關閉事件不會被髮送回Web服務器,因此您無法控制該選項卡。

-1

可以使用Global.aspx

的Session_End中的事件
//For Specific Session 
Session.Remove("SessionName"); 

//All the Session 
Session.Abandon(); 
+3

iShare:對不起,它不會在瀏覽器關閉時觸發... – Saravanan

+0

是正確的 - 如果會話超時期限(如果未明確設置,我認爲IIS會相當於20分鐘)會觸發事件,並且沒有其他請求從瀏覽器。所以這是一種猜測,並且在用戶實際停止使用您的網站後經常會發生一段時間。 – Jon

+0

這隻在會話超時時才被調用。 –

1

或者你可以檢查你先前的會話狀態在每一個新的瀏覽器開能Session.clear()或Session.abandon()以前的會話。

這將確保您每次啓動應用程序時都會獲得新的會話。

  1. 在.net應用程序中使用BasePage。
  2. 檢查basepage負載上的session.sessionid。
  3. 更多信息如何在基頁中檢測新會話。 BasePage.Session.Link

希望這有助於自動 問候 Shaz

public class BasePage : Page 
{ 

      protected string mySessionId; 

      private CurrentUser _currentUser; 
      public CurrentUser _CurrentUser 
      { 
       get { return ((CurrentUser)HttpContext.Current.Session["myCurrentUser"]); } 
       set { _currentUser = value; } 
      } 


      protected override void OnLoad(EventArgs e) 
      { 

       if (Session["myCurrentUser"] != null) 
       { 
        if (_CurrentUser.ProUser) 
        { 

         mySessionId = Session.SessionID; // it means New Session 

        } 

        if (!mySessionId.IsNullOrDefault() && mySessionId != Session.SessionID) 
        { 
         Session.Abandon(); //Abandon current session and start new one     

        } 
       } 


      } 

} 
0

Yes.First所有瀏覽器會話清晰關閉瀏覽器時。您可以嘗試在瀏覽器中使用javascript函數捕獲瀏覽器關閉或Tab關閉事件,如在卸載和卸載之前。大部分onbefore卸載事件捕獲Chrome,Firefox,IE 11中的瀏覽器關閉事件。

相關問題