IIS 7 應用程式池自動回收關閉的解決方案
阿新 • • 發佈:2019-02-11
如果你正在做ASP.NET,那肯定會用到IIS
如果你想在ASP.NET Application中加入某個定時任務,那想必一定是用一個執行緒在不停地做定時計算
那假設我們在自己的ASP.NET應用程式中加入了Quartz.NET框架,並且配置等等都OK了。
這個站點訪問量很少,現在只有幾個人上班的時候才會使用,結果第二天過來一看,後臺排程的執行緒和計算任務都停止了,如果你抓取了Application_End事件,會發現這個事件居然被呼叫了。
那一定是IIS的應用程式池回收的機制在作怪了。因為IIS的預設設定裡面,如果一個站點所處的應用程式池超過一段時間沒有被訪問或者請求,IIS就會自動回收這個程式池,並且把程序殺掉。那程序裡面的執行緒肯定也活不下來了。
但是我們可以通過設定應用程式池引數使其不會被簡單的自動回收(有些情況無法避免,比如熱部署的站點,錯誤數量超限等等)
在IIS中找到這個站點所用的程式池,點選“高階設定...”
在開啟的列表中更改以下設定:
回收——固定時間間隔(分鐘) 改為 0
——虛擬/專用記憶體限制(KB) 改為 0
程序模型——閒置超時(分鐘) 改為 0
這樣子,一般情況下程式池就不會被自動回收了,後臺一些簡單的計算執行緒就會正常工作