我希望找到一個教程,介紹如何在一段時間不活動後註銷。在ASP.net處於非活動狀態20分鐘後註銷(向DB寫入一行)
通過註銷,我的意思是寫一行到我的SQL數據庫。數據庫表設計了一個名爲user_status的列。當用戶登錄時,ASP將一個名爲「登錄」的行寫入數據庫表中。我想找到一種自動機制,在某個pd不活動後將行寫入數據庫。
我希望找到一個教程,介紹如何在一段時間不活動後註銷。在ASP.net處於非活動狀態20分鐘後註銷(向DB寫入一行)
通過註銷,我的意思是寫一行到我的SQL數據庫。數據庫表設計了一個名爲user_status的列。當用戶登錄時,ASP將一個名爲「登錄」的行寫入數據庫表中。我想找到一種自動機制,在某個pd不活動後將行寫入數據庫。
ASP.NET不提供可在非活動狀態後運行的任何事件。你可能會綁定到會話結束事件(如果我沒有記錯的話,Session_end),但我知道事件不是很可靠。
我能想到的最簡單的方法就是跟蹤用戶上次在表格中的活動時間。然後更新每個動作(顯示和回發)的最後活動時間。另外還有一個例程,每分鐘運行一次,掃描已經停用20分鐘的人員的表格。找到這些人後,重置其user_status條目。
您是否可以更具體一些,以便每分鐘運行一次例程,檢查最近20分鐘內沒有做過任何事的人?謝謝 – user133466 2011-05-05 19:35:45
我會開發一個控制檯應用程序並通過作業調度程序來控制它。如果您沒有作業計劃程序,則可以使用內置的Windows任務計劃程序,但這隻會讓您每五分鐘運行一次。 – 2011-05-05 19:42:35
@ user133466,你不需要編寫例程,因爲IIS已經可以爲你控制這個。 http://www.checkbox.com/kb/articles/kb-1036-survey_software_iis_timeout_settings.asp您所要做的就是配置它,然後執行其他人的建議,並將自定義代碼放入會話結束事件中。 – 2011-05-05 19:54:16
你可能在Application(Global.asax)的SessionEnd事件中做類似的事情。
但是,只有在sessionstate模式爲InProc時纔會引發SessionEnd。
我相信IIS具有管理會話併爲會話提供超時設置的功能。 – 2011-05-05 19:32:03
爲了什麼目的?爲什麼你想知道缺乏活動?例如,如果是用於某種數據庫清理處理,我會更傾向於在SQL Server中運行一項作業,該作業將查找已登錄但尚未在x分鐘內生成任何活動的用戶。正如@maple_shaft提到的,ASP.NET已經在事務的「前端」方面的會話管理機制中出現了。 – 2011-05-05 19:35:28