[英]Application_End Not Running
我是C#的新手,所以請耐心等待。
我有一個在Global.asax.cs文件中的Application_Start
函數中運行的函數,這在我開始調試時工作正常。
但是當我停止調試時,我在Application_End函數中的函數似乎沒有啟動。 我想知道這是否與調試有關,或者只是我的代碼中的錯誤。
我猜應用程序永遠不會結束。 在調試(使用Cassandra或IIS Express)或在IIS本身上運行安裝時,應用程序不會在調試會話結束時結束。
在IIS上,它在工作進程停止時結束。 這會在一段時間后自動發生,具體取決於您的應用程序池設置。
在Cassandra和IIS Express中,當進程正常結束時會發生。 我想知道他們是否定期在這些裝置上進行調用。
在Application_End中放入大量需要依賴觸發的代碼通常不是一個好主意。 考慮到ApplicationInstance將啟動到將為您的應用程序提供服務的工作進程的每個線程,您將遇到在忙碌的站點上頻繁調用Application_End的情況,因為流量會消耗和流動。
當對象從Cache到期時,您可能會發現使用具有滑動過期和回調函數的Cache對象更容易,以確保在需要時正確調用清理代碼。
http://msdn.microsoft.com/en-us/library/05kd8d77(v=vs.110).aspx
我有一個類似的問題,其中沒有調用Application_End
,因為當要求停止應用程序時有線程運行,並且因為只有在一切都停止正常后調用此方法。
然后,我發現了Application_Disposed
。 來自http://www.techrepublic.com/article/working-with-the-aspnet-globalasax-file/5771721/ :
Application_Disposed:在銷毀應用程序之前觸發。 這是清理以前使用的資源的理想位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.