2013-11-22 74 views
0

我有一個ASP.NET MVC 4應用程序,我希望它每週都會發送一個報告電子郵件。我已經閱讀了關於Quartz.NET的內容,但對於這個簡單的任務它太強大了。現在我試圖使用NCron,但它需要在Main()方法的初始化器(帶有強制性參數args):MVC定時郵件發送

class Program 
{ 
    static void Main(string[] args) 
    { 
     Bootstrap.Init(args, ServiceSetup); 
    } 
} 

有沒有在Application_Start()做到這一點的呢?我應該怎樣通過args param?其他解決方案可以解決這個問題

+0

_「我希望它每週發送報告電子郵件」_ - 創建一個[計劃任務](http://windows.microsoft.com/en-US/windows7/schedule-a-task)。 – CodeCaster

回答

0

NCron的作者說...

第一:我從來沒有自己整合到NCron一個Web應用程序,我不知道它會如何工作。例如,Kenneth指出,如果IIS沒有收到任何流量,它會關閉您的應用程序,並且可能還有其他打嗝。

爲了NCron整合到一個web應用程序,我建議你忽略Bootstrap.Init()(爲切入點,專爲控制檯應用程序)和相當直接與SchedulingService工作:

using (var service = new SchedulingService()) 
{ 
    service.Hourly().Run<DataUpdateJob>(); 
    service.Daily().Run<RecycleCacheJob>(); 

    service.Start(); 
} 

還是那句話:我從來沒有自己做這件事,但請確實試試,讓我和其他人知道你的表現如何。

+0

使用此代碼我收到消息,說這種類型沒有構造函數...無論我嘗試調用它。難道我做錯了什麼? (使用已正確添加) – silentfobos

+0

「SchedulingService」沒有構造函數嗎?我自己並沒有嘗試過,但代碼肯定會顯示一個公共構造函數:https://github.com/schourode/ncron/blob/master/src/NCron/Service/SchedulingService.cs#L43 –

0

你必須查看ncrone用這些參數做什麼。它所做的是將Windows應用程序的命令行參數傳遞給組件。 如果您在Web應用程序上使用它,則不具有命令行參數,因此如果它需要參數,則必須自己構造參數(無論是硬編碼的還是來自配置文件或數據庫,或者...)

也有可能,這些都是可選的,那麼你可以通過空數組(但再次,檢查ncrone的文檔)

另外,請記住,當你的應用程序關閉(標準是20分鐘後沒有任何活動),你的跑步者不會喚醒它。如果是這種情況,您需要通過確保每20分鐘至少完成一次請求來保持應用程序的活動狀態,或者將IIS配置爲始終保持活動狀態。