我正在使用旧版本的 Quartz.NET (v2.6.2) 和 .NET Core(或者可能是 .NET5)。尝试使用 StdSchedulerFactory.GetScheduler 时出现错误。我所有的配置设置都在我的 appsettings.json 中,我在其中使用这些值填充 NameValueCollection 并使用 DI 将它们注入到我的类中。
["quartz.scheduler.instanceId"] = "instance_one",
["quartz.threadPool.type"] = "Quartz.Simpl.SimpleThreadPool, Quartz",
["quartz.threadPool.threadCount"] = "5",
["quartz.jobStore.misfireThreshold"] = "60000",
["quartz.jobStore.type"] = "Quartz.Impl.AdoJobStore.JobStoreTX, Quartz",
["quartz.jobStore.useProperties"] = "false",
["quartz.jobStore.dataSource"] = "default",
["quartz.jobStore.tablePrefix"] = "QRTZ_",
["quartz.dataSource.default.provider"] = "SqlServer-20",
["quartz.dataSource.default.connectionString"] = quartzConn
我正在使用这样的 StdSchedulerFactory,其中 Settings.Properties 是包含所有配置设置的 NameValueCollection:
var factory = new StdSchedulerFactory(Settings.Properties);
var scheduler = factory.GetScheduler();
在GetScheduler方法上,引发错误“无法初始化数据源:默认值”。
疯狂的是,这段代码在使用常规 web.config 提供配置设置的 Framework 4.x 项目中运行良好。此外,当我在上面的代码中更改为使用 Quartz 3.X 时,appsettings.json 中的配置可以正常工作。似乎我混合和匹配两个版本导致 Quartz 不知道如何检索某些值的问题?
有没有办法手动构建我的调度程序而不使用工厂?
谢谢!