2016-06-15 24 views
0

一個特殊的要求讓我在quartz.net中實現了一個自定義觸發器。 (Version 2.3.0)自定義觸發器持久代表必須包含在quartz.dll中嗎?

我遇到的問題是註冊適當的持久委託。

  • 主要項目,它引用了所需的Quartz.dll並啓動調度
  • 核心項目是由「主要項目」中引用的實例,並在功能擴展了項目也可以通過其他項目訪問

現在「核心項目」是我聲明瞭自定義觸發器實現和所屬的自定義持久委託的地方。

在調度程序實例「主要項目」的配置數據通過配置文件提供,在這裏我補充說:

<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'. 

T他明確提到的裝配讓我感到困惑。我是否必須編譯包括我的自定義持久委託在內的Quartz源代碼才能找到它?還是我錯過了別的?

回答

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" />

<add key="quartz.jobStore.driverDelegateInitString" value="triggerPersistenceDelegateTypes=SolutionName.QuartzService.Core.Triggers.CustomTriggerPersistenceDelegate, SolutionName.QuartzService.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />

,現在有來自調度沒有更多的投訴啓動。

相關問題