2016-06-21 65 views
2

我有一個ASP.NET網站,我使用Quartz來做一些後臺工作。 Quartz作業設置爲每5分鐘觸發一次。當在IIS(ASP.NET)上託管時,Quartz在後臺運行多長時間?

威爾石英:

  1. 在後臺運行continiously最後一個用戶後,已經離開 網站?
  2. 在某個時間點停止,並在新用戶進入網站時繼續?

如果答案是#2,有沒有辦法讓工作一直運行?

回答

3

在一段時間不活動之後,您的IIS託管應用程序將落入某種「睡眠模式」之王。從這一刻起,您的觸發器將不再啓動作業,直到您的應用程序被試圖訪問它的用戶重新激活。

這裏有一些可用的解決方案給你:

  • 在分離Windows服務運行你的工作。需要一些重構工作,但顯然是最安全的解決方案

  • Hangfire是另一個.Net後臺作業庫。以下是他們提供給用戶的解決此問題的鏈接,由Making ASP.NET application always running提供。請注意,您需要完全控制您的託管環境才能實現此目的。

  • 您可以設置一些服務爲Pingdom以防止您的網站進入這種「睡眠模式」。 但是,我不會推薦這個解決方案。

請注意,您的應用程序分爲「睡眠模式」之前所需要的時間可以從一個環境到另一個改變。如果你的情況需要超過5分鐘(每個作業之間的時間),這個過程可能足以保持你的網站。事實上,它將作爲解決方案#3(使用外部服務以頻繁的速度戳你的環境)

相關問題