2

我在 Azure 工作者角色(托管在西欧地区)上使用 Quartz.Net,由于某种原因,我的调度程序无法正常工作并抛出此错误:

扫描下一个要触发的触发器时出错。无法获取下一个触发器:无法检索触发器:在本地计算机上找不到时区 ID“协调世界时”。

当托管在我的 azure 网站应用程序中时,具有相同配置的相同调度程序正在工作。任何的想法 ?

4

3 回答 3

1

实际上,我继续将“UTC”的键/值导出为模板,并使用满足 Quartz 的名称“协调世界时”对其进行编辑,但仍保留原始键。然后我只是将此命令添加到我的deployment.cmd:

regedit /s addtutctz.reg

现在,我确信,即使我的实例被重新配置或云服务重新创建,注册表项也会自动合并。

于 2013-03-20T15:43:13.140 回答
0

好的,这不是最好的解决方案,但我所做的是在 Azure 上创建新的虚拟机,远程登录到 VM,部署我的工作人员并更改 UTC 的注册表项。我基本上将密钥从“UTC”更改为“协调世界时”,这解决了我的问题。现在 Quartz.Net 运行正常。

于 2013-03-18T10:47:56.493 回答
0

我有同样的问题。我通过在特定时区创建触发器来修复它:

    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();
    }
于 2013-05-14T01:38:06.933 回答