我在Azure工作者角色(托管在西欧区域)使用Quartz.Net,由于某种原因,我的调度程序无法正常工作抛出此错误:
扫描下一个触发触发器时发生错误。 无法获取下一个触发器:无法检索触发器:时间 在本地找不到区域ID“协调世界时” 计算机。
在我的azure网站应用程序中托管时,具有相同配置的相同调度程序正在运行。任何的想法 ?
答案 0 :(得分:1)
我实际上已经将“UTC”的键/值导出为模板,并使用名称“协调世界时”进行编辑,以满足Quartz,但是仍保留原始密钥。然后我把这个命令添加到我的deployment.cmd:
regedit /s addtutctz.reg
现在,我确信,即使我的实例被重新配置或重新创建了云服务,注册表项也会自动合并。
答案 1 :(得分:0)
好的,这不是最好的解决方案,但我所做的是在Azure上创建新的虚拟机,远程登录到VM,部署我的工作人员并更改了UTC的注册表项。我基本上将密钥从“UTC”更改为“协调世界时”并对我的问题进行了排序。现在Quartz.Net正在运行。
答案 2 :(得分:0)
我遇到了同样的问题。我通过在特定的TimeZone上创建触发器来修复它:
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();
}