ASP.NET 每小时调用一次我的方法



我想发送剩余的电子邮件。我创建了一个方法,该方法将在接下来的一小时内向有约会的用户发送电子邮件。现在我必须手动调用我的方法。但是我想使用 HangFire(或者如果您有更好的建议)每小时(下午 3:00、下午 4:00 等)调用我的方法。我不想使用 Windows 任务计划程序,因为我将来无法访问服务器。

//[HttpPost("lll/reminder")]
public IActionResult EventReminder()
{
var date = DateTime.Now;
var events = eventRepository.GetEventsByDateTimeNow();
foreach(Event evnt in events)
{
var usr = userRepository.GetUserById(evnt.AttendeeId);
var message = new MimeMessage();
message.From.Add(new MailboxAddress("", ""));
message.To.Add(new MailboxAddress("User", usr.Email));
message.Subject = "Remainder";
message.Body = new TextPart("html")
{
Text = "message"
};
using (var client = new SmtpClient())
{
client.Connect("smtp.gmail.com", 587, false);
client.Authenticate("", "");
client.Send(message);
client.Disconnect(true);
}               
}
return Ok();
}

这是方法。它正在工作,但我必须手动调用它。那么,有什么想法吗?

正如你已经提到的,HangFire可以帮助你解决这个问题。他们直接在主页上有几个示例。你想要的可能是"重复性工作":

定期作业

定期作业按指定的CRON 计划触发多次

RecurringJob.AddOrUpdate(
() => Console.WriteLine("Recurring!"),
Cron.Daily);

您可以通过多种方式设置和配置 hangfire,但最简单的方法是简单地将其添加到 Startup.cs 文件中。

我建议您遵循快速入门指南,因为您的用例看起来相当简单,在 Web 应用程序中运行"服务器"对于许多小型站点/应用程序和用例来说可能已经足够了。

有一些方法可以帮助改进在 Web 应用本身中运行服务器。也就是说,如果您需要非常强大的东西,将"服务器"设置为Windows服务或其他"进程外"进程可能是值得花费的时间,并且hangfire也很容易支持。

最新更新