2016-08-24 53 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

相关问题