我最近使用hangfire来处理冗长的工作,使我能够在ASP MVC Core应用程序中更有效地返回API调用。
我通过在startup.cs中添加以下内容来表达这一点
public class Startup
{
public IConfigurationRoot Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddCors(options => options.AddPolicy("AllowAll", p => p.AllowAnyOrigin()));
services.AddHangfire(configuration => configuration.UseSqlServerStorage(Configuration.GetConnectionString("DefaultConnection")));
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
app.UseCors("AllowAll");
app.UseMvc();
app.UseHangfireDashboard();
app.UseHangfireServer();
}
然后在控制器上的操作中调用它
using (new BackgroundJobServer())
{
formData.DateCreated = DateTime.Now;
formData.Source = "Web";
formData.StatusItem = _context.Status.FirstOrDefault(x => x.Default == true);
_context.Lead.Add(formData);
_context.SaveChanges();
}
现在我需要每天凌晨1点发送一封电子邮件,其中包含数据库中记录的状态。
我从以下角度对实施方式略有不满:
- 我在哪里实施后台工作? - 我把呼叫放在一个方法中,如果是这样的话怎么称呼/ - 我找不到BackgroundJob.AddOrUpdate,我理解它用于重复任务 - schedule方法采用timepan对象,但所有示例都使用CRON。
我拥有创建电子邮件的所有代码,我只需要帮助安排它
提前感谢您的帮助。