我有一个系统,用于在特定时间向用户发送电子邮件。 内置于ASP.NET MVC4并具有动作结果"功能"用于检查消息的时间,如果消息的日期是今天则发送消息。
如何以有效的方式调用此操作结果(每日) - 就像调度程序一样?
感谢。
答案 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计划程序安排控制台应用程序在特定时间运行;你甚至可以在没有显示控制台窗口的情况下运行它。有关如何安排任务的详细信息,请参阅here或here。
答案 3 :(得分:-1)
使用Azure Functions,这正是它的构建目的。真的很好。
https://docs.microsoft.com/en-us/azure/azure-functions/functions-overview