configuration - Quartz 2.6.2 和 .NET Core?- 错误“无法初始化数据源”
问题描述
我正在使用旧版本的 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 不知道如何检索某些值的问题?
有没有办法手动构建我的调度程序而不使用工厂?
谢谢!
解决方案
我不得不回到 Framework 4 和 Quartz 2.6 才能让它们很好地协同工作。我只能让 Quartz 3.x 与 .NET Core/5 一起工作。使用 dotPeek 单步执行源代码,Quartz 2.6 使用 ConfigurationManager 来提取 Core/5 中不存在的 web.config 详细信息。在这一点上,我不记得我是否尝试将自己的 web.config 文件添加到这个项目中,但我已经继续前进了。
推荐阅读
- solidity - 合约的方法返回空对象
- ipfs - 如何使用 IPFS-JS 获取公共 IP 地址
- c - 如何重置全局变量prev?
- php - 开发奖励盒算法
- c++ - 如何在 C++ 中制作类向量?
- swift - 当需要的触摸次数超过一次时,如何快速获取 UILongPressGestureRecognizer 的触摸位置?
- swift - 如何将从 Firebase 检索到的数据显示到选项卡栏控制器内的视图控制器上?
- python - 如何在此网页上从 Tableau 中提取值
- emacs - 分层弹出菜单的简单实现
- python - 如何仅在 x 轴上居中文本,但能够在 pygame 中移动 y 轴?