每天在特定时间进行Hangfire定期性工作

s.k*_*aul 3 asp.net-mvc recurring background-process hangfire

我试图每天在9:00 AM执行hangfire定期工作。这是我想做的

RecurringJob.AddOrUpdate(() => MyMethod(), "* 9 * * *");
Run Code Online (Sandbox Code Playgroud)

我应该把这行代码放在哪里?

抱歉,这是一个愚蠢的问题。

Far*_*han 5

假设您正在使用.Net Core,可以在哪里找到该文件startup.cs。在那您可以找到一种Configure()方法。在方法内部,您可以在该行之后立即使用该行app.UseHangfireDashboard()app.UseHangfireServer()该行用于配置hangfire仪表板,这是可选的。不要忘了注册迟发型服务ConfigureServices()方法,可以在找到startup.cs自己。

你可以注册迟发型服务里面ConfigureServices()Startup.cs

    public void ConfigureServices(IServiceCollection services)
    {    
    /*
    other services
    */

    services.AddHangfire(x => x.UseSqlServerStorage("YOUR_HangfireServerConnectionString"));

    /*
    services.AddMvc()
    */
    }
Run Code Online (Sandbox Code Playgroud)

您可以设置迟发型的CronConfigure()Startup.cs

public void Configure(IApplicationBuilder app)
{
    app.UseHangfireDashboard();  
    app.UseHangfireServer();
    RecurringJob.AddOrUpdate(() => MyMethod(), "* 9 * * *");
}
Run Code Online (Sandbox Code Playgroud)

更多信息请参考链接

更新

cron表达式* 9 * * *表示作业将在系统时间 UTC时间9(24小时格式)之后每分钟触发一次。

要在每天的9:00 AM创建定期作业,0 9 * * *请在此处使用表达式cron表达式

  • @skpaul 不要忘记在 Hangfire 中的日程安排。像这样工作:`RecurringJob.AddOrUpdate(() => MyMethod(), Cron.Daily(9,0));` (3认同)
  • 为了您的信息,如果您不希望从不同实例运行相同的作业,您应该在添加 cron 时提供唯一标识符,如下所示 `RecurringJob.AddOrUpdate("YOUR_UNIQUE_STRING",() => MyMethod(), "* 9 * * *");` (2认同)