1.長期無用戶訪問網(wǎng)頁,asp.net 會自動進入Application_End事件(時間長短可以配置IIS)
2.修改web.config文件
3.刪除該站點下的文件夾之后,會自動進入Application_End
4.修改了bin目錄下的文件
5.重啟IIS
IIS 7 應(yīng)用程序池自動回收關(guān)閉的解決方案
如果你正在做ASP.NET,那肯定會用到IIS 如果你想在ASP.NET Application中加入某個定時任務(wù),那想必一定是用一個線程在不停地做定時計算那假設(shè)我們在自己的ASP.NET應(yīng)用程序中加入了Quartz.NET框架,并且配置等等都OK了。這個站點訪問量很少,現(xiàn)在只有幾個人上班的時候才會使用,結(jié)果第二天過來一看,后臺調(diào)度的線程和計算任務(wù)都停止了,如果你抓取了Application_End事件,會發(fā)現(xiàn)這個事件居然被調(diào)用了。
那一定是IIS的應(yīng)用程序池回收的機制在作怪了。因為IIS的默認設(shè)置里面,如果一個站點所處的應(yīng)用程序池超過一段時間沒有被訪問或者請求,IIS就會自動回收這個程序池,并且把進程殺掉。那進程里面的線程肯定也活不下來了。
但是我們可以通過設(shè)置應(yīng)用程序池參數(shù)使其不會被簡單的自動回收(有些情況無法避免,比如熱部署的站點,錯誤數(shù)量超限等等)
在IIS中找到這個站點所用的程序池,點擊“高級設(shè)置...” 在打開的列表中更改以下設(shè)置:
回收——固定時間間隔(分鐘) 改為 0
——虛擬/專用內(nèi)存限制(KB) 改為 0
進程模型——閑置超時(分鐘) 改為 0 這樣子,一般情況下程序池就不會被自動回收了,后臺一些簡單的計算線程就會正常工作
|