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

Quartz.NET触发器未触发:同部署两台机器表现不一致问题

Quartz.NET Windows服务触发器在部分机器无法触发问题

我使用Quartz.NET开发了一个Windows服务,在一台机器部署后一切正常,触发器可按时触发;但将相同部署包部署到另一台机器时,触发器仅完成注册、调度处于运行状态,却无法触发执行。我已排查所有可能问题,仍无法定位原因。以下是Quartz配置代码:

{
    try
    {

        var jobFactory = new JobFactory(_serviceProvider);
        _scheduler.JobFactory = jobFactory;

        var triggers = new List<ITrigger>();

        foreach (var location in LocationCronExpression.Keys)
        {

            string cronExpression = LocationCronExpression[location];

            var jobDetail = JobBuilder.Create<CronJob>()
                .WithIdentity($"CronJob_{location}", "DefaultGroup")
                .UsingJobData("Location", location)
                .Build();

            ITrigger trigger = TriggerBuilder.Create()
                                         .WithIdentity($"Trigger_{location}", "DefaultGroup")
                                         .WithSchedule(CronScheduleBuilder
                                         .CronSchedule(cronExpression)
                                         .InTimeZone(TimeZoneInfo.Local))                                             
                                         .ForJob(jobDetail)
                                         .Build();
           

            await _scheduler.ScheduleJob(jobDetail, trigger);

            triggers.Add(trigger);

            ServiceLogger.Log.Debug($"Зарегистрирован триггер: {trigger.Key.Name} для тегов с location4 = {location}");
        }
        ServiceLogger.Log.Debug("Триггеры зарегистрированы.");

        await _scheduler.Start();
                        }

        ServiceLogger.Log.Debug($"Quartz запущен. {_scheduler.IsStarted}");

        foreach(var trigger in triggers)
        {
            DateTimeOffset? nextFireTime = trigger.GetNextFireTimeUtc();
            if (nextFireTime.HasValue)
            {
                ServiceLogger.Log.Debug($"Следующее выполнение триггера {trigger.Key.Name} для {trigger.JobKey.Name}: {nextFireTime.Value.DateTime}");
            }
            else
            {
                ServiceLogger.Log.Debug("Триггер не запланирован на выполнение");
            }
        }
        ServiceLogger.Log.Debug($"Scheduler shutdown??? {_scheduler.IsShutdown}");

    }
    catch (Exception ex)
    {
        ServiceLogger.Log.Fatal("Ошибка при создании расписания запуска службы: " + ex);
        return;
    }
}

内容的提问来源于stack exchange,提问作者Артём Пучков

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 02:52:18