2011-11-24 67 views
3

據我所知,quartz.net調度程序在global.asax中啓動。也就是說,除非有人訪問該網站,否則quartz.net調度程序不起作用。這不是一種安全的方法,因爲調度程序線程可以通過重新啓動服務器或IIS池中的進程被終止來終止,調度程序線程將保持未啓動狀態,直到有人再次訪問網站。Web應用程序如何在共享主機上實現計劃任務?

我們可以使用Windows調度程序來解決這個問題。但我們正在使用共享主機,我們無法在主機上編寫服務或SQL Server作業或安排Windows任務。

如果我們確定我們的網站每天都有訪問,這不是問題。 如果不是,即使沒有人訪問我們的網站幾天,即使服務器重新啓動,我們如何確保網絡調度程序始終工作?

+0

這些服務可以幫助:http://www.onlinecronservices.com/ – Kizz

回答

1

最簡單的方法是讓服務器上的計劃任務觸發您的工作(通過請求頁面)。如果你沒有可以做到這一點的服務器,你可以使用pingdom之類的東西以n個間隔點擊一個頁面。

如果你確實有服務器來做到這一點,你也可以編寫一個服務 - 但對於一些微不足道的事情,我只是使用一個計劃任務。

+1

謝謝您的解答。 **但我們使用共享主機,我們無法編寫服務或安排任務**。 – Max

+0

您可以使用像pingdom.com這樣的網站在n個內部點擊一個頁面(觸發您的工作)。 –

2

您應該安裝quartz.net作爲Windows服務,並通過遠程訪問您的Web應用程序。這將保證調度程序始終運行。說明建立調度作爲Windows服務在這裏: Getting Started with Quartz.Net Part 1

+0

最好的辦法是將Quartz.Net作爲單獨的Windows服務安裝。如果你真的做不到,那麼石英可能不適合這裏的工作。你可能也想檢查這個[簡單的解決方案](http://stackoverflow.com/)。 – yorah

+0

對不起,我之前評論中的剪貼板中存在錯誤的鏈接。這裏是正確的鏈接:http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/ – yorah

相關問題