一项特殊要求促使我在quartz.net中实现自定义触发器。 (版本2.3.0)
我遇到的问题是注册适当的持久性委托。
有
现在,“核心项目”是我声明自定义触发器实现和归属自定义持久性委托的地方。
在“主项目”中,通过配置文件提供了调度程序实例的配置数据,这里我添加了:
<add key="quartz.jobStore.driverDelegateInitString" value="triggerPersistenceDelegateClasses=SolutionName.QuartzService.Core.Triggers.CustomTriggerPersistenceDelegate, SolutionName.QuartzService.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
(我之前也尝试过SolutionName.QuartzService.Core.Triggers.CustomTriggerPersistenceDelegate
)
当我启动调度程序时,我看到注册该持久性委托的尝试失败了:
Unhandled Exception: Quartz.SchedulerConfigException: Failure occured during job recovery. ---> Quartz.Impl.AdoJobStore.NoSuchDelegateException: Couldn't instantiate delegate: Error instantiating TriggerPersistenceDelegate of type: SolutionName.QuartzService.Core.Triggers.CustomTriggerPersistenceDelegate ---> Quartz.Impl.AdoJobStore.NoSuchDelegateException: Error instantiating TriggerPersistenceDelegate of type: SolutionName.QuartzService.Core.Triggers.CustomTriggerPersistenceDelegate ---> System.TypeLoadException: Could not load type 'SolutionName.QuartzService.Core.Triggers.CustomTriggerPersistenceDelegate' from assembly 'Quartz, Version=2.3.0.0, Culture=neutral, PublicKeyToken=null'.
明确提到的Quartz
- 集会让我感到困惑。我是否必须编译Quartz源代码,包括我的自定义持久委托,以便找到它?或者我错过了其他什么?
答案 0 :(得分:0)
答案很明显:不。
在我的情况下,我似乎只使用了错误的设置名称。
我替换了
hide.bs.collapse
与
<add key="quartz.jobStore.driverDelegateInitString" value="triggerPersistenceDelegateClasses=SolutionName.QuartzService.Core.Triggers.CustomTriggerPersistenceDelegate, SolutionName.QuartzService.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
现在没有更多来自调度程序启动的投诉。