Quartz.NET Connection-transaction对不能为null

时间:2012-05-30 14:53:45

标签: c# windows-services quartz.net

当我查看基于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...

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

3 个答案:

答案 0 :(得分:5)

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

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

所以我的建议是,它或者是我遇到的问题或其他一些与DB相关的问题(比如分配的用户缺少一些权限)。可能尝试使用其他数据库或为分配的用户授予更多权限

答案 1 :(得分:4)

Debugger.Launch();放在Windows服务代码的第一行上方,这样当您启动该服务时,您将能够逐步执行代码并找到引发异常的确切代码行...

答案 2 :(得分:1)