C# .NETCore中hangfire重复作业的入口点
在服务层有一个方法,我们需要使用HangFire定期调用它,所以,问题是,在asp.net核心中实现C# .NETCore中hangfire重复作业的入口点,c#,asp.net-core,hangfire,C#,Asp.net Core,Hangfire,在服务层有一个方法,我们需要使用HangFire定期调用它,所以,问题是,在asp.net核心中实现重复作业的最佳位置在哪里 如果在startup.cs中是最好的,我们如何处理该方法在startup.cs中需要的所有依赖关系 我试过这个: RecurringJob.AddOrUpdate("FixOrderJob", () => Job.FromExpression<IOrderFixerService>(x => x.FixUnknownOrder()), Cron.M
重复作业
的最佳位置在哪里
如果在startup.cs中是最好的,我们如何处理该方法在startup.cs中需要的所有依赖关系
我试过这个:
RecurringJob.AddOrUpdate("FixOrderJob", () => Job.FromExpression<IOrderFixerService>(x => x.FixUnknownOrder()), Cron.MinuteInterval(5));
如果你想用hangfire运行一个循环作业,最好的开始位置之一是在startup类中 基于hagnfire,
RecurringJob
类是RecurringJobManager
类的门面。因此,只需将IRecurringJobManager作为参数插入,并在此处配置作业:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IRecurringJobManager recurringJobs)
{
//Access To HangFire dashboard : http://app_hostname/hangfire
app.UseHangfireDashboard();
app.UseHangfireServer();
//....
//....
app.UseMvc();
//....
//....
recurringJobs.AddOrUpdate("FixOrderJob", Job.FromExpression<IOrderFixerService>(x => x.FixLatestUnknownOrder()), Cron.MinuteInterval(1));
}
public void配置(IApplicationBuilder应用程序、IHostingEnvironment环境、iLogger工厂日志、IRecurringJobManager重复作业)
{
//进入HangFire仪表板:http://app_hostname/hangfire
app.UseHangfireDashboard();
app.UseHangfireServer();
//....
//....
app.UseMvc();
//....
//....
recurringJobs.AddOrUpdate(“FixOrderJob”,Job.FromExpression(x=>x.FixLatestUnknownOrder()),Cron.MinuteInterval(1));
}
您到底有什么问题<代码>配置在构建IoC/DI容器后被调用,因此解析可用。但是,服务的范围各不相同,当您从应用程序容器解析服务时,服务实际上变成了单例(在较新的ASP.NET核心版本中,当您尝试从应用程序服务提供程序解析范围服务时,它应该引发异常)。您必须在每个作业调用的基础上解决依赖关系(不知道是否/如何在Hangfire中实现,但没有使用它)。但是上面的错误消息与依赖性问题无关
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IRecurringJobManager recurringJobs)
{
//Access To HangFire dashboard : http://app_hostname/hangfire
app.UseHangfireDashboard();
app.UseHangfireServer();
//....
//....
app.UseMvc();
//....
//....
recurringJobs.AddOrUpdate("FixOrderJob", Job.FromExpression<IOrderFixerService>(x => x.FixLatestUnknownOrder()), Cron.MinuteInterval(1));
}