【问题标题】:Quartz 2.6.2 and .NET Core? - Error "Could Not Initialize DataSource"Quartz 2.6.2 和 .NET Core? - 错误“无法初始化数据源”
【发布时间】:2021-09-11 03:55:35
【问题描述】:

我正在使用旧版本的 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 方法上,抛出错误“Could Not Initialize Datasource: default”。

疯狂的是,这段代码在使用常规 web.config 提供配置设置的 Framework 4.x 项目中运行良好。此外,当我在上面的代码中更改为使用 Quartz 3.X 时,appsettings.json 中的配置可以正常工作。似乎我混合和匹配两个版本导致 Quartz 不知道如何检索某些值的问题?

有没有办法手动构建我的调度程序而不使用工厂?

谢谢!

【问题讨论】:

    标签: configuration datasource quartz-scheduler quartz.net-2.0


    【解决方案1】:

    我必须回到 Framework 4 和 Quartz 2.6 才能让它们很好地协同工作。我只能让 Quartz 3.x 与 .NET Core/5 一起工作。使用 dotPeek 单步执行源代码,Quartz 2.6 使用 ConfigurationManager 来提取 Core/5 中不存在的 web.config 详细信息。在这一点上,我不记得我是否尝试将自己的 web.config 文件添加到这个项目中,但我已经继续前进了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-09
      • 2016-12-16
      • 2015-09-14
      • 1970-01-01
      • 1970-01-01
      • 2021-11-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多