Quartz.net没有在远程服务器上触发

时间:2012-07-09 14:29:19

标签: windows-services quartz.net windows-server quartz.net-2.0

我在windows服务中实现了quartz.net来运行任务。在本地工作站上一切正常。但是一旦它被部署到远程win服务器主机,它就会在初始化后挂起。

ISchedulerFactory schedFact = new StdSchedulerFactory();

// get a scheduler
var _scheduler = schedFact.GetScheduler();

// Configuration of triggers and jobs
var trigger = (ICronTrigger)TriggerBuilder.Create()
                                          .WithIdentity("trigger1", "group1")
                                          .WithCronSchedule(job.Value)
                                          .Build();

var jobDetail = JobBuilder.Create(Type.GetType(job.Key)).StoreDurably(true)
                                .WithIdentity("job1", "group1").Build();

var ft = _scheduler.ScheduleJob(jobDetail, trigger);

一切似乎都是标准的。我有调度程序的私有静态指针,日志记录进程在作业初始化并添加到调度程序后立即停止。之后没有其他事情发生。  我很感激任何建议。

感谢。

PS:

根据quartz.net在事件查看器mb中发现了一些奇怪的事件:

Restart Manager - Starting session 2 - ‎2012‎-‎07‎-‎09T15:14:15.729569700Z.
Restart Manager - Ending session 2 started ‎2012‎-‎07‎-‎09T15:14:15.729569700Z.

2 个答案:

答案 0 :(得分:2)

根据您的问题以及您在评论中提供的其他信息,我猜您的服务的onStart方法存在问题。

您可以采取以下措施来帮助找出并解决问题:

  1. 将代码放在onStart方法的try / catch块中,然后尝试安装并启动该服务。然后检查Windows日志以查看它是否已正确安装,正确启动等等。
  2. 重新启动管理器正在运行这一事实让我相信您的服务可能依赖于已在使用的进程。在安装之前,请确保关闭服务的所有依赖项。
  3. 在onStart方法中放置数据密集型或长时间运行操作也可能导致此问题。确保将此类代码保留在onStart之外。

答案 1 :(得分:0)

我遇到了类似的问题,这是因为在程序集名称中有点/句点,例如Project.Update.Service。当我将其更改为ProjectUpdateService时,它工作正常。

奇怪的是,它始终适用于开发机器。永远不要在远程机器上。

更新:可能是导致此问题的服务长度。通过删除点我缩短了服务名称。看起来最大长度为25个字符。