转向asp.net核心2.1正在打破我们的篝火作业设置。
在Main
的{{1}}方法中,我们有类似
Program.cs
var webHost = BuildWebHost(args);
ConfigureHangfireJobs(webHost);
webHost.Run();
看起来像这样:
BuildWebHost
return WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration(ConfigConfiguration)
.UseStartup<Startup>()
.UseApplicationInsights()
.Build();
正在调用ConfigureHangfireJobs
,需要设置RecurringJob.AddOrUpdate()
,并且我发现在添加hangfireserver中间件时它已设置,而在{{中配置了hangfire服务1}}方法。据我所知,中间件设置是在JobStorage.Current
类的Startup.ConfigureServices
方法中完成的,所以我们调用Configure
来设置Startup
}}
使用核心2.0时,由于app.UseHangfireServer
方法调用了JobStorage.Current
方法,所以一切运行正常,因此Configure
已设置好并可用于BuildWebHost()
。但是当切换到核心2.1时,JobStorage.Current
现在被称为ConfigureHangfireJobs
方法的一部分。这意味着我们的Configure
现在失败了,因为webHost.Run()
还没有准备好。
现在,我当然可以将hangfire作业设置为ConfigureHangfireJobs
方法的一部分,但这不是它所属的位置。另一个选择是自己设置JobStorage.Current
,但那不是hangfireserver中间件的责任吗?
所以我的问题是:我们应该如何在核心2.1中正确设置hangfire作业?
答案 0 :(得分:0)
好的,我可以通过请求JobStorage服务来使它正常工作,
services.GetRequiredService<JobStorage>();
即使我不需要帮助,它也会设置JobStorage.Current。
答案 1 :(得分:0)
对于最新版本的ASP.NetCore 2.1,请使用
app.ApplicationServices.CreateScope().ServiceProvider.GetRequiredService<JobStorage>();