我目前有一个使用 ASP.NET Core MVC (.NET 4.6.1) 的简单网站设置,我想定期执行一些流程,例如在每天结束时自动向注册会员发送电子邮件。
经过一番搜索,我发现了两个常见的解决方案——Quartz.NET 和 FluentScheduler。
基于这个SO thread,我发现使用 FluentScheduler 的方法更容易消化和用于我的简单任务。在我的 Program.cs 类中快速实现以下代码行后,我每分钟都会成功发送电子邮件(出于测试目的)。
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
var registry = new Registry();
JobManager.Initialize(registry);
JobManager.AddJob(() => MyEmailService.SendEmail(), s => s
.ToRunEvery(1)
.Minutes());
host.Run();
}
}
但是,现在除了发送电子邮件之外,我还需要做一些后端处理,例如在发送邮件时更新数据库中的用户记录。为此,我通常将我的实体框架上下文注入到我的控制器的构造函数中,并使用它来获取/更新 SQL 记录。
我的问题是,由于我无法真正将这些服务注入到 main 方法中,那么初始化注册表和添加作业以进行调度的合适位置在哪里?
感谢您的帮助,我对此有点陌生,因此非常感谢您的指导!