【问题标题】:.Net Quartz Scheduler 2.3 does not work on the remote server.Net Quartz Scheduler 2.3 在远程服务器上不起作用
【发布时间】:2015-01-14 09:59:09
【问题描述】:

我正在开发可以在我的开发机器上运行的 Windows 服务,但是当我部署到测试服务器时,我发现我设置的 Quartz 调度程序不起作用。 没有抛出异常或任何线索说明为什么会这样。 这是我的代码;

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 并没有运行。 我应该如何解决这个问题?

【问题讨论】:

    标签: windows-services quartz.net


    【解决方案1】:

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

    【讨论】:

    • 虽然您并没有真正回答问题,但我发现问题与运行服务的帐户有关,您的回复让我对此进行了调查。所以谢谢你。
    • 我有同样的问题,你能帮我@arame3333你做了什么解决方案?谢谢
    【解决方案2】:

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

    对我来说,我的程序集的名称中有点/句点。例如

    Project.UpdateService

    当我把它改成...

    ProjectUpdateService

    ... 效果很好。它总是在开发机器上工作。它只是无法在远程机器上运行。

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

    【讨论】:

      猜你喜欢
      • 2017-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-03
      • 2015-10-15
      • 2023-03-14
      • 2015-12-28
      • 2013-05-23
      相关资源
      最近更新 更多