.Net Quartz Scheduler 2.3 在远程服务器上不工作
.Net Quartz Scheduler 2.3 does not work on the remote server
我正在开发可在我的开发机器上运行的 windows 服务,但是当我部署到测试服务器时,我发现我设置的 Quartz Scheduler 不起作用。
没有抛出异常,也没有任何线索说明这是为什么。
这是我的代码;
protected override void OnStart(string[] args)
{
try
{
this.SetDailySchedule();
}
catch (SchedulerException ex)
{
this.eventLog.WriteEntry("WMS FM Loader: Schedule Error - " + ex.Message);
throw ex;
}
catch (Exception ex)
{
this.eventLog.WriteEntry("WMS FM Loader: Unexpected Error - " + ex.Message);
throw ex;
}
}
private void SetDailySchedule()
{
this.eventLog.WriteEntry("On Start".Log());
var schedule = this.GetSchedule();
try
{
this.schedFact = new StdSchedulerFactory();
this.sched = this.schedFact.GetScheduler();
}
catch (Exception ex)
{
this.eventLog.WriteEntry(ex.Message.Log());
throw;
}
this.eventLog.WriteEntry(string.Format("Got a scheduler: {0}", schedule).Log());
try
{
ScheduleTheLoad(schedule);
}
catch (Exception ex)
{
this.eventLog.WriteEntry(ex.Message.Log());
throw;
}
this.eventLog.WriteEntry("WMS FM Loader: Scheduler ready");
}
private void ScheduleTheLoad(string schedule)
{
var job = JobBuilder.Create<LoadWorksOrders>().WithIdentity("LoadWorksOrdersJob").Build();
// Trigger the job to run now, and then every day
var trigger =
TriggerBuilder.Create()
.ForJob(job)
.WithIdentity("LoadWorksOrdersTrigger")
.StartNow()
.WithCronSchedule(schedule)
.Build();
this.sched.ScheduleJob(job, trigger);
this.sched.Start();
}
我手动启动服务,事件日志显示调度程序已准备就绪,但 LoadWorksOrdersJob doe snot get 运行。
我应该如何解决这个问题?
运行 windows 服务 OnStart 中的两个方法是您吗?您使用的是服务帐户吗?事件查看器中有任何异常/您是否从 services.msc 启动/停止了服务?
我也遇到了这个问题。我花了一天时间才弄明白。
对我来说,我的程序集的名称中包含 dots/periods。例如
Project.UpdateService
当我把它改成...
ProjectUpdateService
...它运行良好。它总是在开发机器上工作。它只是在远程机器上不起作用。
更新:可能是服务时间过长导致了这个问题。通过删除点,我缩短了服务名称。看起来最大长度是 25 个字符。
我正在开发可在我的开发机器上运行的 windows 服务,但是当我部署到测试服务器时,我发现我设置的 Quartz Scheduler 不起作用。 没有抛出异常,也没有任何线索说明这是为什么。 这是我的代码;
protected override void OnStart(string[] args)
{
try
{
this.SetDailySchedule();
}
catch (SchedulerException ex)
{
this.eventLog.WriteEntry("WMS FM Loader: Schedule Error - " + ex.Message);
throw ex;
}
catch (Exception ex)
{
this.eventLog.WriteEntry("WMS FM Loader: Unexpected Error - " + ex.Message);
throw ex;
}
}
private void SetDailySchedule()
{
this.eventLog.WriteEntry("On Start".Log());
var schedule = this.GetSchedule();
try
{
this.schedFact = new StdSchedulerFactory();
this.sched = this.schedFact.GetScheduler();
}
catch (Exception ex)
{
this.eventLog.WriteEntry(ex.Message.Log());
throw;
}
this.eventLog.WriteEntry(string.Format("Got a scheduler: {0}", schedule).Log());
try
{
ScheduleTheLoad(schedule);
}
catch (Exception ex)
{
this.eventLog.WriteEntry(ex.Message.Log());
throw;
}
this.eventLog.WriteEntry("WMS FM Loader: Scheduler ready");
}
private void ScheduleTheLoad(string schedule)
{
var job = JobBuilder.Create<LoadWorksOrders>().WithIdentity("LoadWorksOrdersJob").Build();
// Trigger the job to run now, and then every day
var trigger =
TriggerBuilder.Create()
.ForJob(job)
.WithIdentity("LoadWorksOrdersTrigger")
.StartNow()
.WithCronSchedule(schedule)
.Build();
this.sched.ScheduleJob(job, trigger);
this.sched.Start();
}
我手动启动服务,事件日志显示调度程序已准备就绪,但 LoadWorksOrdersJob doe snot get 运行。 我应该如何解决这个问题?
运行 windows 服务 OnStart 中的两个方法是您吗?您使用的是服务帐户吗?事件查看器中有任何异常/您是否从 services.msc 启动/停止了服务?
我也遇到了这个问题。我花了一天时间才弄明白。
对我来说,我的程序集的名称中包含 dots/periods。例如
Project.UpdateService
当我把它改成...
ProjectUpdateService
...它运行良好。它总是在开发机器上工作。它只是在远程机器上不起作用。
更新:可能是服务时间过长导致了这个问题。通过删除点,我缩短了服务名称。看起来最大长度是 25 个字符。