Quartz.net Schedular在本地主机上工作但不在共享主机上工作

时间:2015-07-18 10:04:42

标签: c# asp.net quartz.net

我正在使用Quartz来安排我的网站项目中的任务。当我从visual studio本地运行时,这些工作正在执行,但是当我在共享主机上传网站时,它无法正常工作。

任何人都可以告诉我这可能是什么原因?

public class JobSchedular
{
   Private Static IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
    public static void Start()
    {

        scheduler.Start();

        IJobDetail SendWeeklyMailJob = JobBuilder.Create<SendWeeklyMailJob>().Build();
        IJobDetail SendQuarterMailJob = JobBuilder.Create<SendQuarterlyMailJob>().Build();

        //ITrigger SendWeeklyMailJobTrigger = TriggerBuilder.Create()
        //    .WithIdentity("SendWeeklyMailJob", "SendWeeklyMailJobTrigger")
        //    .WithSchedule(CronScheduleBuilder
        //    .WeeklyOnDayAndHourAndMinute(DayOfWeek.Monday, 5, 15))
        //    .Build();

        ITrigger SendQuarterMailJobTrigger = TriggerBuilder.Create()
            .WithIdentity("SendQuarterMailJob", "group1")
            .StartNow()
            .WithDailyTimeIntervalSchedule(s => s.WithIntervalInHours(24))
            .Build();

        ITrigger SendWeeklyMailJobTrigger = TriggerBuilder.Create()
            .WithIdentity("SendWeeklyMailJob", "group1")
            .StartNow()
            .WithDailyTimeIntervalSchedule(s => s.WithIntervalInMinutes(1))
            .Build();

        scheduler.ScheduleJob(SendWeeklyMailJob, SendWeeklyMailJobTrigger);
        scheduler.ScheduleJob(SendQuarterMailJob, SendQuarterMailJobTrigger);

    }
}

这是我的工作班。

这就是我在global.asax

中开始这项工作的方式
void Application_Start(object sender, EventArgs e)
{
    // Code that runs on application startup
    JobSchedular.Start(); 
}

我可以了解部署后它无法在服务器上运行的原因吗?如何让它在服务器上运行?

1 个答案:

答案 0 :(得分:1)

您丢失了对调度程序的引用。调度程序应该是应用程序中的长期对象,单例是理想的。

但是,在应用程序中运行Quartz.net时存在问题,因为IIS会回收应用程序,因此会终止您的调度程序。