簡體   English   中英

Quartz.NET作業配置為每天運行一次,但在第一天工作,但隨后幾天無法啟動

[英]Quartz.NET job configurared to run once daily works the first day but fails to fire on subsequent days

我已經在我的asp.net應用程序中配置了quartz.net,我有一項工作設置為每天凌晨1點運行。 如果我更改job-config.xml文件以使其在2分鍾的時間內運行,則更改將自動進行,而無需重新啟動應用程序池,並且將觸發該作業。 但是,如果我恢復所做的更改以使工作在凌晨1點再次解雇,則似乎沒有解雇。 對我來說,顯而易見的原因是應用程序池或IIS已重新啟動,這將導致我的asp.net應用程序關閉(實際上是關閉了quartz.net,因為它是同一asp的一部分。凈進程),但要測試quartz.net是否仍在運行,而沒有任何iisreset或應用程序池回收,我再次更改job-config.xml文件以在2分鍾內再次啟動並運行該作業,因此它不會似乎發生了應用程序池回收或IIS重置的情況-我不明白。

我想使該作業在asp.net應用程序下運行,而無需創建其他Windows服務,因此,我們將不勝感激。 以下是我的quartz.net配置文件的摘要。

<job>
<job-detail>
  <name>xjob</name>
  <group>MyJobs</group>
  <description>blah blah</description>
  <job-type>yyy.xxx,yyy</job-type>
  <volatile>false</volatile>
  <durable>true</durable>
  <recover>false</recover>      
</job-detail>
<trigger>
  <cron>
    <name>xJobTrigger</name>
    <group>MyJobs</group>
    <description>blah blah</description>
    <job-name>xJob</job-name>
    <job-group>MyJobs</job-group>
    <cron-expression>0 0 1 * * ?</cron-expression>
  </cron>      
</trigger>

謝謝

我認為發生了幾件事。 如您所提到的,如果在asp.net下運行調度程序,則該過程可能會被回收,並且您的調度程序在應該運行時可能無法運行。 如果讓工作在某個特定時間運行很重要,那么您需要將Quartz.net設置為服務。

缺少的另一件事是,我認為您正在使用RAM作業,這意味着當調度程序重新啟動時,它將重新調度該作業,因此在您的情況下,直到1時它才會再次觸發。如果調度程序未運行為1時,即使調度程序重新啟動(依此類推),該作業也不會觸發。 如果使用ADO作業存儲,則一旦計划程序再次啟動並且檢測到不點火,至少觸發器將保持不變並且作業將運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM