2014-09-05 59 views
2

我是C#的新手,所以請耐心等待。Application_End Not Running

我有一個在Global.asax.cs文件中的Application_Start函數中運行的函數,並且在我開始調試時工作正常。

但是當我停止調試時,我在Application_End函數中的函數似乎沒有啓動。我想知道這是否與調試有關,或者只是我的代碼中的錯誤。

+0

它很可能你的應用程序仍在運行。您是否檢查過您的IIS Express運行實例是否已完全在系統托盤中關閉?你是否託管它在完整的IIS? – 2014-09-05 15:05:47

+0

我在IIS Express中託管它,但從外觀看,我認爲你是對的,我不認爲它是停止的。當我停止運行該功能時,我需要執行此功能。你知道我會如何告訴它停止嗎? – user3413723 2014-09-05 15:07:13

+0

@ user3413723:您確定要在應用程序退出時結束它,而不是會話嗎?你想要執行什麼樣的動作? – 2014-09-05 15:09:37

回答

1

在Application_End中放置大量代碼通常不是一個好主意,您需要依賴這個代碼。考慮一下ApplicationInstance已經啓動給將要爲你的應用程序提供服務的工作進程的每個線程,你將遇到你的Application_End將在繁忙的站點上被頻繁地調用的場景,這些場景就是流量消耗和流量。

當緩存中的對象到期時,您可能會發現使用具有滑動過期和回調函數的Cache對象更容易,以確保在需要時正確調用清理代碼。

http://msdn.microsoft.com/en-us/library/05kd8d77(v=vs.110).aspx

2

我想應用程序永遠不會結束。在調試時(使用Cassandra或IIS Express)或在IIS上運行安裝時,應用程序不會在調試會話結束時結束。

在IIS上工作進程停止時結束。這會在一段時間後自動發生,具體取決於您的應用程序池設置。

在Cassandra和IIS Express中,當進程結束時,會發生。我想知道他們是否定期接到這些裝置的電話。