2009-11-18 55 views
2

在我的應用程序中,我保存了與數據庫中用戶會話相關的一些數據。當用戶註銷時,我將清除數據庫中的所有會話數據。到現在爲止還挺好。如何識別IIS重新啓動?

但是,當IIS重新啓動時,所有活動會話都將失效,而無法正常清理。

所以,我需要確定IIS何時重新啓動來解決這種情況。

回答

1

我只想把事情的int Application_Start事件在Global.asax

http://www.codetoad.com/asp.net_globalasax.asp

您的應用程序已重新啓動出於某種原因,並根據您的描述,就必須清除所有的會話了的數據庫,無論它是從IIS重新啓動,還是應用程序池被重新利用等。

您不能相信您的應用程序設置了一個標誌,表示IIS在您的application_end事件中發出了重新啓動信號,因爲有時它不會開火。例如,如果服務器崩潰,或者如果IIS在其控制之外(taskkill)被殺死,會發生什麼情況。

+0

我懷疑(但驗證這將是聰明的),他可以把一些東西放在Application_End事件中。 – Brian 2009-11-18 17:22:22

0

在存儲會話數據的SQL服務器上定義了一個DBNAME_Job_DeleteExpiredSessions作業。如果您的SQL Agent服務正在運行,則該作業將清除舊會話。 More info

0

會話超時如何?超時後需要清理嗎?還要記住,你不能真正轉達Session.End事件 - 它只適用於進程內會話