Konfigurieren Quartz.NET mit SQL Server AdoJobStore

Ich habe Probleme versuchen zu bekommen Quartz.NET arbeiten mit einem AdoJobStore. Keine der anderen Fragen scheinen hier zu sein, läuft in das problem, dass ich bin. Ich war in der Lage, um es arbeiten fein ohne die AdoJobStore Konfiguration, würde es aber gerne beibehalten, alles am Ende, aber ich erhalte eine Fehlermeldung, wenn Sie versuchen zu GetScheduler() dass ich nicht herausfinden können.

Hier mein Quarz app.config Abschnitt:

<quartz>
   <add key="quartz.scheduler.instanceName" value="XxxDefaultQuartzScheduler"/>
   <add key="quartz.scheduler.instanceId" value="instance_one"/>

   <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz"/>
   <add key="quartz.threadPool.threadCount" value="10"/>
   <add key="quartz.threadPool.threadPriority" value="1"/>

   <add key="quartz.jobStore.type" value="Quartz.Impl.AdoJobStore.JobStoreTX, Quartz"/>
   <add key="quartz.jobStore.misfireThreshold" value="60000"/>      
   <add key="quartz.jobStore.dataSource" value="default"/>
   <add key="quartz.jobStore.driverDelegateType" value="Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz"/>        
   <add key="quartz.jobStore.lockHandler.type" value="Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, Quartz"/>
   <add key="quartz.jobStore.tablePrefix" value="QRTZ_"/>

   <add key="quartz.dataSource.default.connectionString" value="Server=(local);Database=Quartz;UID=XXXX;PWD=XXXX"/>
   <add key="quartz.dataSource.default.provider" value="SqlServer-20"/>
   <add key="quartz.dataSource.useProperties" value="true"/>
</quartz>

Und hier ist der relevante code für die Initialisierung:

var config = (NameValueCollection) ConfigurationManager.GetSection("quartz");

ISchedulerFactory factory = new StdSchedulerFactory(config);

//This is where an ArgumentOutOfRange exception occurs:
IScheduler scheduler = factory.GetScheduler();

Und der Fehler bin ich immer ArgumentOutOfRangeException:

Länge kann nicht kleiner als null sein.\r\nParameter name: Länge

Schrittweise durch den code, mit dem ich überprüfen kann, die config-Abschnitt bekommt, richtig gelesen und ich doppelt und dreifach geprüft für Rechtschreibfehler und falsche groß-und Kleinschreibung der config-Eigenschaften. Ich habe überprüft die Datenbank ist erreichbar mit der connectionString habe ich auch.

Eine Sache, die ich bemerkt, während Sie den code schrittweise Durchlaufen und die Prüfung der Fabrik variable im Direktfenster ist, dass Sie immer sagt "AllSchedulers: Count = 0" - nicht sicher, ob das ist, weil ich noch nicht instanziiert man doch oder wenn es das ist Teil meines Problems. Zu geben versuchen GetScheduler() die instanceName von der Konfiguration -

factory.GetScheduler("XxxDefaultQuartzScheduler")

funktioniert auch nicht.

Was ich bin fehlt/falsch? Bitte um Rat.

  • Nebenbei für jeden, der nach dieser Frage, die quartz.jobStore.lockHandler.type Eigenschaft sollte entfernt werden, da es Kräfte Quarz für die Verwendung eines weniger effizienten locking-Strategie, die Rendite Warnungen, um Ihre Protokolle.
Schreibe einen Kommentar