首页 > 解决方案 > Quartz.Net 调度程序在 Azure 中不起作用

问题描述

所以我在 C# 中使用 Quartz.Net 创建了一个 SimpleSchedular,如下所示 -

我已经创建了这个内部WebApi项目。

// Grab the Scheduler instance from the Factory
 NameValueCollection props = new NameValueCollection
 {
     { "quartz.serializer.type", "binary" }
 };
 StdSchedulerFactory factory = new StdSchedulerFactory(props);
 IScheduler scheduler = await factory.GetScheduler();

 // and start it off
 await scheduler.Start();

 // define the job and tie it to our HelloJob class
 IJobDetail job = JobBuilder.Create<IDGJob>()
     .WithIdentity("job1", "group1")
     .Build();

ITrigger trigger = TriggerBuilder.Create()
    .WithIdentity("trigger1", "group1")
    .StartNow()
    .WithSimpleSchedule(x => x.WithIntervalInMinutes(5).RepeatForever())
    .Build();

 // Tell quartz to schedule the job using our trigger
 await scheduler.ScheduleJob(job, trigger);

这在 localhost 中就像一个魅力,但是一旦我将它部署到 Azure,它就什么也没做。

所以我做了一些谷歌搜索,发现 Azure 在东部标准时间工作 -

var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
var cronScheduleBuilder = CronScheduleBuilder.DailyAtHourAndMinute(19, 10)
                                              .InTimeZone(timeZoneInfo);

并将调度程序更改为 -

 ITrigger trigger = TriggerBuilder.Create()
     .StartNow()
     .WithSchedule(cronScheduleBuilder)
     .Build();

我也尝试过 UTC 格式。

但仍然没有任何工作。

我什至使用RoleEntryPoint了类,但结果再次相同。

这个 Quartz 真的可以在 Azure 上工作还是我错过了什么。

标签: c#azureasp.net-web-apiquartz

解决方案


它有效,但您的网络应用程序很可能会离线。确保您始终启用:

在此处输入图像描述


推荐阅读