.Net Quartz Scheduler 2.3在远程服务器上不起作用

时间:2015-01-14 09:59:09

标签: windows-services quartz.net

我正在开发适用于我的开发机器的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 run。 我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

您是否在Windows服务OnStart中运行这两种方法?您使用的是服务帐户吗?事件查看器中的任何异常/您是否已从services.msc启动/停止服务?

答案 1 :(得分:0)

我也有这个问题。我花了一天时间来解决这个问题。

对我而言,我的集会名称中有点/句点。 e.g。

Project.UpdateService

当我把它改为......时,

ProjectUpdateService

......它运作良好。它始终适用于开发机器。它只是在远程机器上不起作用。

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