2017-05-06 86 views
0

我已经使用Quartz.net调度某个任务。问题在于它仅在本地调试时才起作用。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 
    } 
} 

任何帮助将是伟大的!

+0

_“代码不工作”_什么不工作? _“其他问题中提到的解决方案都不能解决我的问题”_您尝试了哪些解决方案? – Rabban

+0

@Rabban,我试图改变IIS服务器设置的空闲超时时间,使得ISchedulerFactory和IScheduler具有一个实例。最后,我发现问题出在时区上。谢谢你的帮助!! –

回答

0

我通过在TriggerBuilder中添加时区来实现它。

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