2013-07-04 8 views
5

Ich habe Probleme, Quartz.NET mit einem AdoJobStore arbeiten zu lassen. Keine der anderen Fragen hier scheint auf das Problem zu stoßen, das ich bin. Ich konnte es ohne die AdoJobStore-Konfiguration in Ordnung bringen, möchte aber am Ende alles beibehalten, jedoch bekomme ich einen Fehler, wenn ich versuche, GetScheduler(), die ich nicht herausfinden kann.Konfigurieren von Quartz.NET mit SQL Server AdoJobStore

Hier ist 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 entsprechende 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 die Fehler, die ich bekommen habe ist ArgumentOutOfRangeException:

Länge kann nicht kleiner als Null. \ r \ nParametername: Länge

Durch den Code gehen Ich kann überprüfen, die Config-Abschnitt wird richtig gelesen und ich verdoppelte und dreifach auf Rechtschreibfehler und falsche Großschreibung der Config-Eigenschaften überprüft. Ich habe überprüft, dass die Datenbank mit der connectionString zugänglich ist, die ich habe.

Eine Sache, die ich beim Durchlaufen des Codes und Untersuchen der Fabrikvariablen im Direktfenster bemerkt habe, ist, dass immer "AllSchedulers: Count = 0" angezeigt wird - nicht sicher, ob das noch nicht instanziiert wurde oder wenn das ein Teil meines Problems ist. Der Versuch, GetScheduler() die instanceName aus der Konfiguration zu geben -

factory.GetScheduler("XxxDefaultQuartzScheduler") 

funktioniert auch nicht.

Was vermisse ich/mache ich falsch? Bitte um Rat.

+0

Nebenbei bemerkt sollte die Eigenschaft 'quartz.jobStore.lockHandler.type 'entfernt werden, da sie Quarz dazu zwingt, eine weniger effiziente Sperrstrategie zu verwenden, die Warnungen ausgeben wird Ihre Protokolle. –

Antwort

8

Ok, fand mein eigenes Problem - Die Eigenschaft Quarz. dataSource .useEigenschaften sollten Quarz sein. JobStore .useProperties

Verwandte Themen