我在 Azure 工作者角色(托管在西欧地区)上使用 Quartz.Net,由于某种原因,我的调度程序无法正常工作并抛出此错误:
扫描下一个要触发的触发器时出错。无法获取下一个触发器:无法检索触发器:在本地计算机上找不到时区 ID“协调世界时”。
当托管在我的 azure 网站应用程序中时,具有相同配置的相同调度程序正在工作。任何的想法 ?
我在 Azure 工作者角色(托管在西欧地区)上使用 Quartz.Net,由于某种原因,我的调度程序无法正常工作并抛出此错误:
扫描下一个要触发的触发器时出错。无法获取下一个触发器:无法检索触发器:在本地计算机上找不到时区 ID“协调世界时”。
当托管在我的 azure 网站应用程序中时,具有相同配置的相同调度程序正在工作。任何的想法 ?
实际上,我继续将“UTC”的键/值导出为模板,并使用满足 Quartz 的名称“协调世界时”对其进行编辑,但仍保留原始键。然后我只是将此命令添加到我的deployment.cmd:
regedit /s addtutctz.reg
现在,我确信,即使我的实例被重新配置或云服务重新创建,注册表项也会自动合并。
好的,这不是最好的解决方案,但我所做的是在 Azure 上创建新的虚拟机,远程登录到 VM,部署我的工作人员并更改 UTC 的注册表项。我基本上将密钥从“UTC”更改为“协调世界时”,这解决了我的问题。现在 Quartz.Net 运行正常。
我有同样的问题。我通过在特定时区创建触发器来修复它:
private static ITrigger BuildTriggerForEveryDayAtSpecifiedTime(int hour, int minutes)
{
var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");
return TriggerBuilder
.Create()
.WithIdentity(string.Format("Triggers every Day at {0}:{1}", hour, minutes), "MyJobs")
.StartNow()
.WithCronSchedule(string.Format("0 {0} {1} ? * *", minutes, hour), csb => csb.InTimeZone(timeZoneInfo))
.Build();
}