2011-05-15 47 views
1

如果我想每小時運行一系列Web服務調用。我怎麼能從我的Web服務器上做到這一點?定時器在網站上每小時激活Web服務調用

我猜測有一個計時器需要部署在某個地方,這樣它會倒計時,當時間到了,它會再次使用這些Web服務並檢索返回的XML數據以存儲在數據庫中。然後定時器重新設置。

回答

4

如果您想在ASP.NET Web應用程序中執行此操作,請查看Quartz.NET Job Scheduler,它非常適合這類事情。

否則,您可以使用timer作爲Windows服務運行單獨的應用程序,或者將控制檯應用程序作爲Windows計劃任務運行。

+0

謝謝你指點我正確的方向。我正在考慮對Global.asax進行更改,因爲該網站位於共享主機環境中。 http://stackoverflow.com/questions/1356789/quartz-net-with-asp-net – 2011-05-15 14:05:17

+0

嗨,如何防止這種情況發生? http://forums.asp.net/p/1520519/3652545.aspx – 2011-05-15 14:35:52

0

爲什麼不只是使用cron?克倫設立這樣的事情。

+0

我不確定Cron是否可用於Windows主機。更正如果我錯了。 – 2012-12-14 09:38:04

2

您可以使用System.Threading.Timer類應用在Global.asax中啓動事件:

protected static Timer timer; 

protected void Application_Start(Object sender, EventArgs e) 
{ 
    timer = new Timer(MyRoutineToCall, null, TimeSpan.FromHours(1), TimeSpan.FromHours(1)); 
} 

protected void MyRoutineToCall(Object state) 
{ 
    // do your stuff here 
} 
+0

有趣。我也遇到了這個。爲什麼會在這裏使用緩存? http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet。 – 2011-05-15 14:02:46

+0

@Jason,也許是因爲這是使用任務的方式之一。雖然我不知道Jeff爲什麼會這樣做,而不是手動創建任務。可能我的猜測是錯誤的:) – 2011-05-15 15:01:40

0

Windows任務調度可能是你所需要的。