2014-02-10 21 views
2

我有一個簡單的問題 - 我如何在Global.asax的Session_OnEnd()中獲取當前通過身份驗證的用戶?在Session_OnEnd中獲取用戶

我試圖做的是:

public void Session_OnEnd() 
    { 
     string user = User.Identity.Name; 
    } 

但我得到的異常「用戶是不是在這種情況下可用。」 如何獲得當前用戶? 我應該在登錄時將名稱存儲在會話變量中嗎?這不是多餘的嗎?

+0

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

+0

我認爲這個問題是非常具體的asp MVC所以我把它放在標題。感謝您的高舉。 – Roman

+0

它可以是特定的,但它就是標籤。 –

回答

3

會話(大部分)在閒置一段時間後結束於服務器。因此,此時沒有請求,因此沒有可用的用戶身份(因爲沒有用於標識用戶的身份驗證令牌)。

所以你是對的,如果你需要在會​​話結束時知道用戶的名字,它將需要一個值爲Session。這看起來有點多餘,但如果這是您需要的,它將成爲您唯一的選擇。