.NET 中的 Cron 作业 (Quartz.NET) 不会每天触发

Cron Job (Quartz.NET) in .NET is not triggering daily

我已经在 .NET 中安排了一个 cron 作业,它在 IIS 中托管。在它触发的第一天(出于测试目的,我实际上是在触发此作业时发送邮件)。但是第二天它没有(我希望它每天递归......每 24 小时一次)请找到下面的代码。[![在此处输入图片描述][1]][1]

public class JobScheduler
{
    public static void Start()
    {
        try
        {
            Logger.Error("-------------------------------------------Inside JobScheduler Start-------------------------------------------");

            IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
            scheduler.Start();

            IJobDetail job = JobBuilder.Create<QualityGateSFDCActionJob>().Build();

            ITrigger trigger = TriggerBuilder.Create().WithIdentity("trigger3", "group1").WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(11, 42)).ForJob(job).Build();

            scheduler.ScheduleJob(job, trigger);

            Logger.Error("-------------------------------------------Scheduler Started without Issues-------------------------------------------");
        }
        catch (Exception ex)
        {
            Logger.Error(ex.Message);
            throw ex;
        }
    }
}

一些好心的帮助。

ITrigger trigger = TriggerBuilder.Create().WithIdentity("trigger3", "group1").WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(11, 42)).ForJob(job).Build();

我只希望这份工作每天 运行 早上 11:42 上午。如果在这方面提供任何帮助,我将不胜感激

应用程序基于 ASP.NET MVC 构建并托管在 IIS 上。我希望一份工作每天 运行,这就是为什么我选择 Cron Job(Windows 服务在我的生产服务器中 context/scope)

IIS 有一个名为 "Recycling" 的功能。这基本上会重新加载 IIS 中的所有内容。

如果您在 IIS 管理器中进入应用程序池的高级设置,则有一个回收间隔,默认情况下为 1740 分钟(29 小时)

当 IIS 回收时,您的应用程序将不会开始 运行ning 直到有东西调用网络服务。因此,它每 29 小时会回收一次,因此根据您启动 web 服务的时间,它将 运行 您的 Cron 作业一次或两次,但绝不会第三次,除非您在回收后调用您的 web 服务以重新启动它。

基本上,IIS 不是托管需要始终 运行ning 作业的应用程序的好地方。