当我查看基于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...
另外,有没有办法获得完整的堆栈跟踪?我无法以编程方式执行此操作,因为它在服务启动之前就已失败。
答案 0 :(得分:5)
我遇到了同样的问题,也尝试了修复Sanjay10提出的错误,但没有奏效。这只是将问题推迟到一个不同的位置。
如果Quartz尝试回滚连接,则会发生此错误,因为尝试创建与数据库的有效连接时发生了一些错误。我的情况这不起作用,因为我的数据库没有配置为允许远程连接(本地仓促设置测试数据库)。切换到另一个(经过良好测试的)数据库为我解决了这个问题。
所以我的建议是,它或者是我遇到的问题或其他一些与DB相关的问题(比如分配的用户缺少一些权限)。可能尝试使用其他数据库或为分配的用户授予更多权限
答案 1 :(得分:4)
将Debugger.Launch();
放在Windows服务代码的第一行上方,这样当您启动该服务时,您将能够逐步执行代码并找到引发异常的确切代码行...
答案 2 :(得分:1)
获取最新的Quartz.net库。他们修复了这个bug。
以下是此
的更改集