Quartz.NET 连接事务对不能为空

本文关键字:不能 事务 NET 连接 Quartz | 更新日期: 2023-09-27 18:35:41

当我查看基于Windows服务的 Quartz.NET 项目的事件日志时,我得到:

Connection-Transaction Pair cannot be null

parameter name: cth

当然,我用谷歌搜索了一下,但没有找到任何关于异常的文档。有谁知道这意味着什么或如何解决它?

提前谢谢。

编辑:这是扩展(但仍未完成)异常/堆栈跟踪:

Service cannot be started. Parameters: refire = False, unscheduleFiringTrigger = False, unscheduleAllTriggers = False Quartz.JobExecutionException: System.ArgumentNullException: Connnection-transaction pair cannot be null Parameter name: cth at Quartz.Impl.AdoJobStore.JobStoreSupport.CheckNotZombied(ConnectionAndTransactionHolder cth) in c:'Work'OpenSource'quartznet'src'Quartz'Impl'AdoJobStore'JobStoreSupport.cs:line 3487 at Quartz.Impl.AdoJobStore.JobStoreSupport.RollbackConnection(ConnectionAndTransactionHolder cth) in c:'Work'OpenSource'quartznet'src'Quartz'Impl'AdoJobStore'JobStoreSupport.cs:line 3300 at Quartz.Impl.AdoJobStore.JobStoreSupport.ExecuteInNonManagedTXLock(String lockName, Func2 txCallback) in c:'Work'OpenSource'quartznet'src'Quartz'Impl'AdoJobStore'JobStoreSupport.cs:line 3467 at Quartz.Impl.AdoJobStore.JobStoreTX.ExecuteInLock(String lockName, Func2 txCallback) in c:'Work'OpenSource'quartznet'src'Quartz'Impl'AdoJobStore'JobStoreTX.cs:line 76 at Quartz.Impl.AdoJobStore.JobStoreSupport.Store...

另外,有没有办法获取完整的堆栈跟踪?我无法以编程方式执行此操作,因为它甚至在服务启动之前就失败了。

Quartz.NET 连接事务对不能为空

我遇到了同样的问题,也尝试了Sanjay10提出的错误修复程序,但没有奏效。这只是将问题推迟到不同的位置。

如果 Quartz 尝试回滚连接,则会发生此错误,因为在尝试创建与数据库的有效连接时发生了某些错误。我的情况这不起作用,因为我的数据库未配置为允许远程连接(是本地匆忙设置的测试数据库)。切换到另一个(经过良好测试的)数据库为我解决了这个问题。

所以我的建议是,它要么是与我遇到的问题相同的问题,要么是其他与数据库相关的问题(例如分配的用户缺少某些权限)。可能尝试另一个数据库或为分配的用户提供更多权限

Debugger.Launch(); 放在 Windows 服务代码的第一行上方,以便在启动服务时能够单步执行代码并找到引发异常的确切代码行...

获取最新的 Quartz.net 库。 他们已经修复了这个错误。

这是为此设置的更改集

https://github.com/quartznet/quartznet/commit/e1a136cf5ac5c525cf0b9514e190e6b1132ffe48#src/Quartz/Impl/AdoJobStore/JobStoreSupport.cs