我有一個自動化系統,我想記錄用戶登錄和註銷。因此,我寫了一個幾乎完美的代碼。首先,我錄製這一段代碼在用戶登錄:用戶記錄Session_End事件
if (UserLog.LoadByUserAndSessionAndLogoutTime(NHibernateHTTPModule.CurrentSession, user, Session.SessionID, null) == null)
{
UserLog userlog = new UserLog();
userlog.LoginTime = DateTime.Now;
userlog.LogoutTime = null;
userlog.User = (Business.Classes.User)Session["User"];
userlog.Session = Session.SessionID;
userlog.IPAddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
UserLog.Insert(NHibernateHTTPModule.CurrentSession, userlog);
}
然後,在Global.asax中的Session_End中的事件,我寫了這個代碼塊;現在
IList<UserLog> userlogs = UserLog.LoadBySessionAndLogoutTime(NHibernateHTTPModule.CurrentSession, Session.SessionID, null);
foreach (UserLog userlog in userlogs)
{
userlog.LogoutTime = DateTime.Now;
UserLog.Update(NHibernateHTTPModule.CurrentSession, userlog);
}
,這一招效果很好,但是當我在一天結束的時候檢查數據庫,我有已登錄的時間,但沒有註銷時間有些殭屍記錄。很明顯,對於某些用戶來說,Session_End不會觸發或發生其他情況,從而阻止更新。我錯過了什麼?爲什麼這不能正常工作?提前致謝。注意:我正在使用NHibernate。