2016-10-18 1 views
0

.NETでcronジョブをスケジュールし、IISでホストされています。最初の日に起動されました(このジョブがトリガーされたときに私は実際にメールを送信します)。しかし、次の日はそれがありません(私はこれを日常的に再帰的にしたい... 24時間ごとに1回)[[画像の説明はこちら] [1]] [1].NETのCr​​on Job(Quartz.NET)が毎日トリガーされていません

public class JobScheduler 
{ 
    public static void Start() 
    { 
     try 
     { 
      Logger.Error("-------------------------------------------Inside JobScheduler Start-------------------------------------------"); 

      IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler(); 
      scheduler.Start(); 

      IJobDetail job = JobBuilder.Create<QualityGateSFDCActionJob>().Build(); 

      ITrigger trigger = TriggerBuilder.Create().WithIdentity("trigger3", "group1").WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(11, 42)).ForJob(job).Build(); 

      scheduler.ScheduleJob(job, trigger); 

      Logger.Error("-------------------------------------------Scheduler Started without Issues-------------------------------------------"); 
     } 
     catch (Exception ex) 
     { 
      Logger.Error(ex.Message); 
      throw ex; 
     } 
    } 
} 

これについて親切に助けてください。

ITrigger trigger = TriggerBuilder.Create().WithIdentity("trigger3", "group1").WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(11, 42)).ForJob(job).Build(); 

このジョブを午前11時42分に毎日実行するだけです。この点について私は全力を尽くしてお礼申し上げます。

アプリケーションはASP.NET MVC上に構築され、IIS上でホストされています。私はジョブを毎日実行したいので、私はCron Jobを選択します(Windowsサービスはプロダクションサーバーのコンテキスト/スコープ外です)

+2

私はこれがIISに関連していると思います。なぜなら、しばらくしてからアプリケーションプールをリサイクルし、あなたの仕事はもう始動できなくなるからです。これに静的なクラスを使用していますか?長時間実行されるタスクは、外部サービスなどでIISでより多く実行されるべきではありません。 – Jehof

+0

私はJehofに同意します。おそらく、IISのリサイクルに関係します。このStart()メソッドはいつ呼びますか?それはあなたが手動で何かをする必要がありますか?サービスを呼び出す? – CathalMF

+0

Jehof&CathalMFに感謝します。はい。データを送信するサービス(REST API)が呼び出されます。毎日行われるべきである – suman

答えて

4

IISには「リサイクル」という機能があります。これは基本的にIISのすべてをリロードします。

あなたはIISマネージャでアプリケーションプールの[詳細設定]に入る場合は、デフォルトでは1740分(29時間)であるリサイクル間隔がある

IISをリサイクルは、アプリケーションが何かを呼び出すまで実行を開始しません。ウェブサービス。したがって、29時間に1回、リサイクルされるので、Webサービスを開始したときに、それを再起動するためにリサイクル後にWebサービスを呼び出さない限り、Cronジョブは1〜2回実行されますが、3回も実行されません。

基本的に、IISは常にジョブを実行する必要があるアプリケーションをホストするのに適していません。

+2

IISアプリケーションプールがリサイクルするための他の原因、例えば構成不能な例外の設定可能な数の後の急速な失敗保護、または設定可能な数の要求の後にリサイクルする...タイマーは確実に専用のサービスプロセスでホストされるべきです。 – dlatikay

+0

あなたの返事にCathalMFを感謝します。だから、あなたはCRON JobがIIS上でそうするのは良い考えではないと言っていますか?私はこれを選択しました。なぜなら私には権限/権利(Windowsサービス、またはプロダクションサーバ上のSQLジョブ)がないからです。 – suman

+0

@すまんを提案してください簡単なWindowsのスケジュールタスクはどうですか? – CathalMF

関連する問題