2011-03-01 34 views
11

我有一個ASP.NET MVC 3 web應用程序託管正常託管,(即不擁有或虛擬服務器),我想能夠將電子郵件存儲在數據庫中,並將它們提取出來併發送到各種後臺作業中。送在後臺工作/計劃任務的電子郵件在asp.net MVC 3

如果這是我自己的服務器,我會編寫一個Windows服務來處理這個問題,但是有什麼方法可以在Web應用程序過程中實現/模擬計劃的任務/後臺作業嗎?

+0

可以請你揭示這種託管公司的名字嗎? 我有一個類似的情況,我想使用計劃任務。 – 2011-08-22 08:18:20

+0

@Zafrir - 它是DiscountASP.net – 2011-08-22 13:50:59

回答

9

你可以看看這篇文章(http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/),它解釋瞭如何在asp.net或asp.net mvc中運行不使用windows服務的計劃任務。

+0

嘿sarvesh,我前一段時間閱讀過這篇文章,但我對以同樣的方式感到有些厭倦。我不知道,如果我從緩存啓動的作業發送了數百封電子郵件,我會不會阻塞應用程序? – 2011-03-01 21:25:26

+0

當您的電子郵件正在發送時,它不會保存您的asp.net請求。你多久會發送這些電子郵件?如果您擔心服務器上的負載可以分批發送嗎? – sarvesh 2011-03-01 21:46:08

+0

@sarvesh:依賴於asp.net來承載循環的代碼執行(按照您提供的文章)是不可靠的 - 如果您的asp.net應用程序在一段時間內空閒(沒有用戶,沒有http請求),它將回收它創建的所有線程,並自行回收,直到其任何資源的下一個請求。一般來說,cron或Quartz.net將是實現Sergi嘗試實現的理想選擇。但是在「有限」託管的情況下,唯一真正的選擇是使用其中一種在線服務,該服務根據用戶設置的時間表向用戶的網頁或sproc發出定期http請求。釷 – 2011-03-02 02:10:48

1

您還可以使用工作現金:

HttpContext.Current.Cache.Add("jobkey", 
         "jobvalue", null, 
         DateTime.MaxValue, 
         TimeSpan.FromSeconds(15), // set the time interval 
         CacheItemPriority.Default, JobCacheRemoved); 

詳情參見this

相關問題