如何打电话"行动结果"特定时间的ASP.NET MVC(每日)

时间:2016-08-24 15:39:21

标签: c# asp.net-mvc-4 scheduled-tasks scheduling actionresult

我有一个系统,用于在特定时间向用户发送电子邮件。 内置于ASP.NET MVC4并具有动作结果"功能"用于检查消息的时间,如果消息的日期是今天则发送消息。

如何以有效的方式调用此操作结果(每日) - 就像调度程序一样?

感谢。

4 个答案:

答案 0 :(得分: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.");
}

来自你的控制器动作。

答案 1 :(得分:0)

当您将新应用程序创建为Windows服务时,效率会更高。您可以在特定时间轻松设置代码。在此解决方案中,您将拥有更多的灵活性和独立性您可以开始雇用:Windows Service to run a function at specified time

答案 2 :(得分:0)

您可以创建一个小型控制台应用程序,只需调用API即可发送电子邮件。然后,您可以使用Windows计划程序安排控制台应用程序在特定时间运行;你甚至可以在没有显示控制台窗口的情况下运行它。有关如何安排任务的详细信息,请参阅herehere

答案 3 :(得分:-1)

使用Azure Functions,这正是它的构建目的。真的很好。

https://docs.microsoft.com/en-us/azure/azure-functions/functions-overview