You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quartz.NET调度器仅从app.config取连接串?DI误用问题排查与解决

解决ASP.NET Core集成Quartz时误用RAM作业存储的问题

场景说明

我开发了一个集成Quartz的ASP.NET Core Web应用,核心逻辑如下:

  • 应用启动时将作业蓝图写入数据库
  • 接收用户输入信息后,添加触发器并调度对应作业

遇到的问题

调度作业时,Quartz抛出“无法在作业存储中找到作业”的错误,排查后发现它没有使用配置的数据库作业存储,反而默认启用了RAM作业存储。

排查过程

  1. 最初尝试多种配置排查,偶然添加app.config并配置数据库连接串后,Quartz居然能正常获取连接串并完成调度。
  2. 但ASP.NET Core推荐使用appsettings.json作为配置文件,而且Program.cs中配置作业时,明明能正常从appsettings.json读取连接串,这让我疑惑是否存在某个配置让Quartz优先读取app.config。

根因分析

最终定位到问题根源:
虽然在Program.cs中已经通过Microsoft依赖注入完成了Quartz的初始化配置,但调度器并未正确利用DI容器。原来的StartAsync方法中是手动实例化StdSchedulerFactory,而不是通过构造函数注入ISchedulerFactory——这是对依赖注入的基础误解导致的错误。

解决方案

将StartAsync中手动实例化StdSchedulerFactory的代码,改为通过构造函数注入ISchedulerFactory,让调度器使用DI容器中已经配置好的Quartz实例。修改后,Quartz就能正确读取appsettings.json中的配置,使用数据库作业存储,问题解决。

内容的提问来源于stack exchange,提问作者Jat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 00:31:13