我正在使用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();
}
我可以了解部署后它无法在服务器上运行的原因吗?如何让它在服务器上运行?
答案 0 :(得分:1)
您丢失了对调度程序的引用。调度程序应该是应用程序中的长期对象,单例是理想的。
但是,在应用程序中运行Quartz.net时存在问题,因为IIS会回收应用程序,因此会终止您的调度程序。