如何在asp.Net核心应用程序中每天运行cron job?

xvw2m8pv  于 2022-12-01  发布在  .NET
关注(0)|答案(4)|浏览(151)

我有一个用asp.netmvccore2.2.o编写的web应用程序,需要在每天凌晨3点运行一个调度作业。做这件事的最好方法是什么?
我试过hangfire它停止后一段时间。我们需要设置IIS服务器始终运行。我谷歌和发现托管服务在。Net核心。谁能告诉我什么是最好的方法来运行一个工作的网络应用程序每天在点net核心?

m3eecexj

m3eecexj1#

老实说,我个人还没有在.NET Core上试用过它,但是您试用过Quartz Scheduler吗?https://www.quartz-scheduler.net/
[更新]:根据Quartz GitHub回购协议:“Quartz.NET支持.NET核心/netstandard 2.0和.NET框架4.6.1及更高版本。”

tkclm6bt

tkclm6bt2#

您可以使用Hangfire
您可以使用CRON模式创建循环函数。

RecurringJob.AddOrUpdate(() => Console.Write("Powerful!"), "0 12 * */2");

提供here文档。

wvyml7n5

wvyml7n53#

您可以使用EasyCronJob(免责声明:我是此软件包的作者)

services.ApplyResulation<TCronJob>(options =>{
 options.CronExpression = "* * * * *";
 options.TimeZoneInfo = TimeZoneInfo.Local;});

文档可用here

quhf5bfb

quhf5bfb4#

Quartz.Net有一个轻量级的替代方案:CronScheduler.AspNetCore
我以前用过Quartz.Net,对于现在的项目来说,这是一个不必要的复杂库。如果想在没有数据库的情况下简单使用,可以试试CronScheduler.AspNetCore。

services.AddScheduler(ctx =>
    {
        ctx.AddJob<TestJob>();
    });

或更复杂的配准:

services.AddScheduler(ctx =>
        {
            var jobName1 = "TestJob1";

            ctx.AddJob(
                sp =>
                {
                    var options = sp.GetRequiredService<IOptionsMonitor<SchedulerOptions>>().Get(jobName1);
                    return new TestJobDup(options, mockLoggerTestJob.Object);
                },
                options =>
                {
                    options.CronSchedule = "*/5 * * * * *";
                    options.RunImmediately = true;
                },
                jobName: jobName1);

        });

相关问题