You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core 6实现项目启动时自动触发Cron定时任务

解决方案

要让Hangfire定时任务在.NET Core 6项目启动时自动注册,无需手动调用API接口,可按以下步骤调整:

1. 重构任务逻辑到独立服务类

把原来控制器中的jobmethod提取到独立服务类中,更符合依赖注入原则,便于在启动流程中调用:

public class MyRecurringJobService
{
    // 可通过构造函数注入所需服务(如数据库上下文、日志等)
    public async Task JobMethod()
    {
        // 这里放置原jobmethod中的业务逻辑
    }
}

2. 注册服务到依赖注入容器

在Program.cs中注册上述服务:

builder.Services.AddScoped<MyRecurringJobService>();

3. 启动时自动注册定时任务

提供两种实现方式,选其一即可:

方式一:使用后台托管服务(IHostedService)

创建一个托管服务,在项目启动时执行任务注册:

public class JobRegistrationHostedService : IHostedService
{
    private readonly IServiceProvider _serviceProvider;

    public JobRegistrationHostedService(IServiceProvider serviceProvider)
    {
        _serviceProvider = serviceProvider;
    }

    public Task StartAsync(CancellationToken cancellationToken)
    {
        using var scope = _serviceProvider.CreateScope();
        var jobService = scope.ServiceProvider.GetRequiredService<MyRecurringJobService>();
        
        // 每5天执行一次任务,若任务已存在则更新配置
        RecurringJob.AddOrUpdate(() => jobService.JobMethod(), Cron.DayInterval(5));
        
        return Task.CompletedTask;
    }

    public Task StopAsync(CancellationToken cancellationToken)
    {
        return Task.CompletedTask;
    }
}

然后在Program.cs中注册该托管服务:

builder.Services.AddHostedService<JobRegistrationHostedService>();

方式二:直接在Program.cs启动流程中执行

在Program.cs的主机构建完成后,直接添加任务注册逻辑:

var app = builder.Build();

// 保留原有中间件配置(如UseRouting、UseAuthorization等)

// 注册定时任务
using (var scope = app.Services.CreateScope())
{
    var jobService = scope.ServiceProvider.GetRequiredService<MyRecurringJobService>();
    RecurringJob.AddOrUpdate(() => jobService.JobMethod(), Cron.DayInterval(5));
}

app.Run();

4. 清理冗余代码

删除原控制器中的RunMyJob接口方法,因为不再需要手动调用。

注意事项

  • 确保项目已正确配置Hangfire:包括添加Hangfire服务(AddHangfire、AddHangfireServer)和中间件(UseHangfireDashboard),开发环境可使用内存存储,生产环境建议配置数据库存储(如SQL Server、PostgreSQL等)。
  • 异步任务可直接被Hangfire处理,无需额外包装。

内容的提问来源于stack exchange,提问作者omar seleim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 01:55:19