2010-07-14 108 views
6

我進入共享主機,他們不允許我使用Windows調度程序...那麼實現計劃任務的方式,即(定時郵件) asp.net ...我剛剛看到由Jeff Atwood博客的background process ...它是可靠的嗎?或做計劃任務的任何其他方式...在asp.net中調度任務(無需編寫Windows調度程序)的方法

後來我發現quartz.net,但我無法找到一個簡單的例子,嵌入quartz.net到一個asp.net(,而無需安裝Quartz.Net服務器作爲一個獨立窗口服務)......上quartz.net任何建議...

+3

http://stackoverflow.com/questions/3243400/how-to-do-background-processing-similar- to-that-on-stackoverflow ...你在這裏問了同樣的問題... – RameshVel 2010-07-14 10:40:53

+0

這不是你的其他問題的重複嗎? – 2010-07-14 19:30:51

+0

你終於得到了什麼解決方案?我有一個相同的要求,但問題是當應用程序池重新啓動時Quartz.net停止工作:( – 2014-06-20 09:52:59

回答

1

我正在調查Microsoft.Web.Administration assembly Schedule Class實現同樣的事情,但似乎該類只能用於安排IIS工作進程重新啓動,這裏是example of creating app pools and setting periodical restart

所以唯一的辦法是安排這是ASP.NET應用程序重新啓動,然後在Application_Start中執行預定的工作。 但是,這是醜陋的黑客而不是解決方案,所以最後我最終增加了調度功能到我們已經在web服務器上運行的本地備份窗口服務,所以IMO Quartz.net是最適合你的解決方案。也許你可以說服你的網站提供商安裝Quartz.net所有其他解決方案似乎是一個黑客,會給你更多或更少的問題。

0
+0

-1這將如何在ASP.NET進程中託管? – 2010-07-14 09:50:07

+0

這可能會幫助您:http:// www。 codeproject.com/KB/dotnet/ABTransClo​​ckArticle.aspx?msg=1990168#xx1990168xx或檢查更新鏈接2 – 2010-07-14 09:57:18

+0

不會幫助Pandya。不會讓你運行Windows Scheduler的主機幾乎不會批准單獨的Windows服務。 – 2010-07-14 14:37:26

3

你庫侖d只需編寫一個執行任務的ASP.Net頁面,例如發送郵件。然後使用在線調度服務(如SetCronJob)按計劃調用服務器上的頁面URL。

這個非常簡單的方法的缺點是您依賴於外部服務。

+0

我可以信任嗎?它...因爲我的應用程序是基於預定的郵件概念... – 2010-07-14 09:59:24

+0

完美!正是我需要的,最糟糕的情況下,我會創建一些從我的機器作爲備份運行的非常簡單的事情。 – mhenrixon 2010-11-12 21:28:51

0

您可以從this中獲得創意,並將您的任務放在KeepAlive方法中。希望!它有助於。

0

不久前,我有這個非常相同的問題,缺乏使用第三方服務,沒有很好的解決方法。

也就是說,我使用的.NET應用程序緩存對象的過期時間爲24小時。

Cache["DailyTask"] = true; 

然後在我的基本頁面類,每次頁面請求提出,我檢查了該變量的存在,如果存在,我跑了任務。這樣做的缺點是,那麼你就依賴於向你的應用程序發出頁面請求。

最後,我已經看到完成的另一種方法是在緩存過期(CacheItemRemovedCallback方法)上設置回調,然後鏈接該方法以將新項插入高速緩存,該項也具有回調,因此循環重複。