.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 个字符。