在ASPNET Core 2.1应用程序中正确设置hangfire作业?

时间:2018-06-18 10:33:37

标签: hangfire asp.net-core-2.1

转向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作业?

2 个答案:

答案 0 :(得分:0)

好的,我可以通过请求JobStorage服务来使它正常工作,

services.GetRequiredService<JobStorage>();

即使我不需要帮助,它也会设置JobStorage.Current。

答案 1 :(得分:0)

对于最新版本的ASP.NetCore 2.1,请使用

      app.ApplicationServices.CreateScope().ServiceProvider.GetRequiredService<JobStorage>();