【发布时间】:2015-07-18 10:04:42
【问题描述】:
我正在使用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();
}
我能得到部署后它在服务器上不起作用的原因吗?如何让它在服务器上运行?
【问题讨论】:
-
Application_Start 仅在回收或启动后的第一个请求期间调用。
-
@Seany84 我知道。但是然后如何在 IIS 回收应用程序的共享主机上进行这项工作。如何创建一个留在内存中并完成工作的单例对象。
-
@SachinTrivedi,你能解决这个问题吗?因为我面临同样的问题
-
@JayakrishnanGounder 不,我不是。我改用了计时器类。
-
JFYI,我已经解决了,请查看stackoverflow.com/questions/43820464/…
标签: c# asp.net quartz.net