我有一个 .NET Web 应用程序,它使用 Hangfire 进行一些重复性工作。我想构建功能,以便用户可以通过应用程序更改作业的间隔。但似乎“更新”不起作用。
我已将 Startup.cs 配置为在应用程序运行时启动作业:
public void Configuration(IAppBuilder app)
{
app.UseHangfireAspNet(GetHangfireServers);
//Admin user can view job dashboard
app.UseHangfireDashboard("/jobs", new DashboardOptions
{
Authorization = new[] { new JobsAuthorizationFilter() }
});
app.UseHangfireServer();
RecurringJob.AddOrUpdate("my-job-id", () => FileProcess.GetOrders(), interval); //interval is a parameter and its initial values is * * * * * which sets the job to run every minute
}
现在在控制器中,当用户单击更新按钮时将调用此方法。
public ActionResult JobUpdate(string newInterval)
{
var manager = new RecurringJobManager();
manager. RecurringJob.AddOrUpdate("my-job-id", () => FileProcess.GetOrders(), newInterval);
return new EmptyResult();
}
但似乎这份工作没有得到更新。我仔细检查了 Hangfire.Hash 表,这项工作的 Cron 值根本没有改变。
我也尝试删除作业然后将其添加回来,也不起作用
public ActionResult JobUpdate(string newInterval)
{
var manager = new RecurringJobManager();
manager.RemoveIfExists("my-job-id");
manager.AddOrUpdate("my-job-id", () => FileProcess.GetOrders(), newInterval);
manager.Trigger("my-job-id");
}
我错过了什么?如何获取用户设置和更新的时间间隔?