2017-05-06 35 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(); 
相關問題