2013-07-04 20 views
5

ben yaşıyorum sorun ile Yapılandırma Quartz.NET bir AdoJobStore ile çalışmak Quartz.NET almaya çalışırken. Buradaki diğer soruların hiçbiri benim olduğum problemin içinde görünmüyor. Ben AdoJobStore yapılandırması olmadan iyi çalışıyor, ancak sonunda her şeyi devam etmek istiyorum başardı, ancak ben anlayamıyorum GetScheduler() çalışırken bir hata alıyorum. ArgumentOutOfRangeException olduğunuSQL Server AdoJobStore

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

ISchedulerFactory factory = new StdSchedulerFactory(config); 

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

Ve alıyorum hata:

Uzunluk az olamaz

İşte benim kuvars app.config bölüm var:

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

Ve burada alakalı başlatma kodu sıfırdan. \ r \ nParametre adı: uzunluk

Ben yapılandırma bölümünü kontrol edebilirsiniz kod üzerinden Stepping

doğru okunuyor ve ben iki katına ve üçlü imla hataları ve yapılandırma özelliklerinin hatalı harf için kontrol etti. Veritabanına, sahip olduğum connectionString ile erişilebildiğini doğruladım.

Koddan çıkarken ve Anlık Pencerede fabrika değişkenini incelerken fark ettiğim bir şey, her zaman "AllSchedulers: Count = 0" yazıyor olmasıdır; bu benim sorunumun bir parçasıysa. yapılandırmasından GetScheduler()instanceName vermeye çalışıyor -

factory.GetScheduler("XxxDefaultQuartzScheduler") 

da çalışmıyor. Nerede yanlış yapıyorum/ne eksik

? Lütfen tavsiye.

+0

Bu soruyu ziyaret eden herkes için bir kenara, "quartz.jobStore.lockHandler.type" özelliği kaldırılmalı, çünkü kuvars daha az etkili bir kilitleme stratejisi kullanmaya zorlar. senin günlüklerin. –

cevap

8

Tamam, benim kendi sorunu anladım - mülkiyet kuvars. dataSource .useProperties kuartz olmalıdır. jobStore .useProperties