Quartz.NET を AdoJobStore で動作させるのに問題があります。ここにある他の質問はどれも、私の問題に遭遇していないようです。AdoJobStore 構成なしで正常に動作させることができましたが、最後にすべてを永続化したいと考えていますが、それをしようとするとエラーが発生し、わかりGetScheduler()
ません。
ここに私のクォーツapp.config
セクションがあります:
<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>
関連する初期化コードは次のとおりです。
var config = (NameValueCollection) ConfigurationManager.GetSection("quartz");
ISchedulerFactory factory = new StdSchedulerFactory(config);
// This is where an ArgumentOutOfRange exception occurs:
IScheduler scheduler = factory.GetScheduler();
そして、私が得ているエラーは次のArgumentOutOfRangeException
とおりです。
長さを 0 未満にすることはできません。\r\nパラメータ名: 長さ
コードをステップ実行すると、構成セクションが正しく読み取られることを確認でき、スペルミスと構成プロパティの大文字と小文字の間違いを二重および三重にチェックできます。私が持っている でデータベースにアクセスできることを確認しましたconnectionString
。
コードをステップ実行し、イミディエイト ウィンドウでファクトリ変数を調べているときに気づいたことの 1 つは、常に「AllSchedulers: Count = 0」と表示されることです。これは、まだインスタンス化していないためなのか、それとも私の問題。構成からを与えようとしてGetScheduler()
いinstanceName
ます -
factory.GetScheduler("XxxDefaultQuartzScheduler")
どちらも機能しません。
私は何が欠けていますか/間違っていますか? ご意見をお聞かせください。