2016-08-24 27 views
1

我有一個系統可以在特定時間內向用戶發送電子郵件。 內置於ASP.NET MVC4中,並且具有一個動作結果「函數」,用於檢查消息的時間並在消息當天發送時發送它。如何在特定時間調用「Action Result」ASP.NET MVC(每日)

我怎樣才能以有效的方式調用這個行爲結果(日常) - 比如調度器?

謝謝。

+0

我肯定會創建一個單獨的應用程序來發送電子郵件,並在服務器上設置一個計劃任務來每天運行它。在這樣的Web應用程序中設置定時器是有風險的。如果應用程序在一段時間內沒有被訪問,IIS可以卸載它並且隨着它一起卸載它的日常任務。 – itsme86

+0

如果你不是那麼嚴格使用MVC動作,請checkout hangfire.io。這很棒。 http://hangfire.io – Developer

回答

2

雖然單獨的服務/應用程序會更好,但您可以使用wget

GNU Wget是一個免費的軟件包,用於使用HTTP檢索文件, HTTPS和FTP,最廣泛使用的Internet協議。這是一個 非交互式命令行工具,所以它可以很容易地從 腳本,cron任務,終端被稱爲不帶X-Windows的支持,等等

這樣,你會做這樣的事情:

"C:\Program Files (x86)\GnuWin32\bin\wget.exe" --no-check-certificate https://www.exammple.com/YouController/YourAction -O NUL 

.bat文件中,並將其設置爲在您需要的時間通過Windows計劃任務運行(假設您不需要每60秒鐘運行一次) - 如果這樣做,讓我知道,因爲我有另一種方式這使用Windows服務來調用bat文件)。

省略-O NUL部分也將保存輸出,所以你可以看到,如果一切都做成功運行:

public ActionResult YourAction() 
{ 
    //Do your code, get some stats that show it ran properly. 
    return Content("Return your stats here."); 
} 

從您的控制器動作。

+0

如果時間在一天,一小時和一分鐘,我的意思是我想按特定時間發送郵件,EX:26/8/2016 03:44 pm? –

+0

您可以將計劃任務設置爲執行此操作。將其設置爲當時開始並且每24小時運行一次。你可以做的另一件事是在行動中添加一個檢查,以確保時間是正確的,如果不是,睡一會兒。 – webnoob

0

當您將新應用程序創建爲Windows服務時,效率更高。在那裏你可以很容易地設置代碼在特定時間開始。在這個解決方案中你將擁有更多的靈活性和獨立性您可以開始租用:Windows Service to run a function at specified time

0

您可以創建一個小調音臺應用程序,只調用API發送電子郵件。然後,您可以使用Windows計劃程序將控制檯應用程序安排在特定時間運行;您甚至可以在不顯示控制檯窗口的情況下運行它。有關如何安排任務的詳細信息,請參見herehere

相關問題