我需要在用戶註銷時更改數據庫值。當用戶點擊「註銷」時,我可以做到這一點,但當用戶超時時,我也需要這樣做。是否有某種聽衆或其他類似的方法可以用來實現此目的?檢測用戶會話超時並執行方法的時刻
基本上,由於SimpleMembership
不支持在線用戶檢查,我不得不使用一個數據庫字段,一個布爾值,即記錄如果用戶點擊登錄或註銷,但顯然我不能把這個字段設置爲「假」,如果除非他們點擊註銷。因此,我需要檢測自動註銷,可以這麼說。
有什麼建議嗎?
我需要在用戶註銷時更改數據庫值。當用戶點擊「註銷」時,我可以做到這一點,但當用戶超時時,我也需要這樣做。是否有某種聽衆或其他類似的方法可以用來實現此目的?檢測用戶會話超時並執行方法的時刻
基本上,由於SimpleMembership
不支持在線用戶檢查,我不得不使用一個數據庫字段,一個布爾值,即記錄如果用戶點擊登錄或註銷,但顯然我不能把這個字段設置爲「假」,如果除非他們點擊註銷。因此,我需要檢測自動註銷,可以這麼說。
有什麼建議嗎?
ASP.NET有會話狀態。所以你應該感興趣的是Session_OnEnd事件。但是你只能使用inProc模式。
參考:http://msdn.microsoft.com/en-us/library/ms178583.aspx
添加這Global.asax中
public void Session_OnEnd()
{
//Perform your logic.
}
您將無法訂閱任何可讓您知道會話超時的通知。
相反,您將需要跟蹤(很可能在數據庫中)用戶執行最後一次操作的時間。然後做一些工作,定期檢查那些沒有在任何給定時間段內執行過動作並觸發註銷方法的成員。
這是不正確的。 – Mukus
參見:How to get notified of session end?
如果你會話進程,你可以訂閱Session_End中的事件。您最終會在會話超時結束後通知會話已結束。
謝謝,我決定嘗試這樣的事情,但現在我需要知道是否有方法在會話結束時獲取用戶的用戶名? –
@ Shakya你指什麼會話?就用戶/瀏覽器而言,用戶的瀏覽器會話是唯一的會話。當會話結束時,這個方法被調用。 – Mukus