【问题标题】:Quartz.net Scheduler is working on local while debugging but not on productionQuartz.net 调度程序在调试时在本地工作,但在生产中不工作
【发布时间】:2017-05-06 12:28:42
【问题描述】:

我使用 Quartz.net 来安排一些任务。问题是它只能在本地调试时工作。

代码在我的本地服务器和生产环境中也无法运行。

请不要将其标记为重复,因为其他问题中提到的解决方案都没有解决我的问题。

 public class JobScheduler
{
    public static ISchedulerFactory schedFact;
    public static IScheduler sched;

    public static void Start()
    {
        schedFact = new StdSchedulerFactory();
        // get a scheduler
        sched = schedFact.GetScheduler();
        sched.Start();

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

        int hours = Convert.ToInt32(System.Web.Configuration.WebConfigurationManager.AppSettings["schedulerHours"].ToString());
        int minute = Convert.ToInt32(System.Web.Configuration.WebConfigurationManager.AppSettings["schedulerMinutes"].ToString());

        ITrigger trigger = TriggerBuilder.Create()
                            .WithDailyTimeIntervalSchedule
                              (s =>
                                 s.WithIntervalInHours(24)
                                .OnEveryDay()
                                .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(hours, minute))
                              )
                            .Build();

        sched.ScheduleJob(job, trigger);

    }
}

public class RemovePlanJob : IJob
{
    public void Execute(IJobExecutionContext context)
    {
        //execute code
    }
}

任何帮助都会很棒!

【问题讨论】:

  • “代码不工作” 什么不工作? “其他问题中提到的解决方案都没有解决我的问题”您尝试了哪些解决方案?
  • @Rabban,我尝试将 IIS 服务器设置更改为空闲超时,将 ISchedulerFactory 和 IScheduler 设为静态以拥有单个实例。最后,我认为问题出在时区上。谢谢你的帮助!!

标签: asp.net asp.net-web-api2 quartz.net quartz


【解决方案1】:

我通过在 TriggerBuilder 中添加时区来让它工作。

 ITrigger trigger = TriggerBuilder.Create()
                            .WithDailyTimeIntervalSchedule
                              (s =>
                                 s.WithIntervalInHours(24)
                                .OnEveryDay()
                                .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(hours, minute))
                                .InTimeZone(TimeZoneInfo.Local)
                              )
                            .Build();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-30
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多