IIS7關閉應用程序池自動回收

web應用程序中經常有一些任務就需要在Global文件啓用一個線程來實現,

那假設我們在自己的ASP.NET應用程序中加入了Quartz.NET框架,並且配置等等都OK了。

這個站點訪問量很少,現在只有幾個人上班的時候纔會使用,結果第二天過來一看,後臺調度的線程和計算任務都停止了,如果你抓取了Application_End事件,會發現這個事件居然被調用了。

那一定是IIS的應用程序池回收的機制在作怪了。因爲IIS的默認設置裏面,如果一個站點所處的應用程序池超過一段時間沒有被訪問或者請求,IIS就會自動回收這個程序池,並且把進程殺掉。那進程裏面的線程肯定也活不下來了。

但是我們可以通過設置應用程序池參數使其不會被簡單的自動回收(有些情況無法避免,比如熱部署的站點,錯誤數量超限等等)

IIS中找到這個站點所用的程序池,點擊高級設置...”

在打開的列表中更改以下設置:

回收——固定時間間隔(分鐘)改爲 0

——虛擬/專用內存限制(KB改爲 0

進程模型——閒置超時(分鐘)改爲 0

這樣應用程序池就不會被定時的自動回收了,任務進程也就可以一直在運行。

另外還有一種解決的辦法就是,在設定的應用程序池回收時間內用,webrequest訪問站點中的某個頁面,這樣也可以達到不被自動回收的效果。

 轉載:http://www.doczj.com/doc/6fbfa79231b765ce0408149c.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章