私は以下の問題の解決策を探しています。私はウェブサイトを持っており、約1時間ごとに(約)いくつかのアドレスにメールを送ります。 私はC#用のQuartzライブラリを使用することに決めました。私は、[スタート]()関数を仕事を書き、実行します。ASP.NET Webサイト数分ごとにプロセスを実行します
public static void Start()
{
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start();
IJobDetail job = JobBuilder.Create<EmailJob>().Build();
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger1", "group1")
.StartNow()
.WithSimpleSchedule(x => x
.WithIntervalInMinutes(50)
.RepeatForever())
.Build();
scheduler.ScheduleJob(job, trigger);
}
のApplication_Startで():
JobScheduler.Start();
私はローカルのウェブサイトを実行すると、アプリケーションがでているので、それは、完璧な作品」常に "再生"モードになります。期待どおり50分ごとにメールを送信します。
問題が発生しました:Webサイトをサーバーにアップロードすると、Jobは初めて1回のみ動作しました。私はそれについて読んだ後、この問題の私の結論は、Webアプリケーションには "スリープ"モードがあるので、誰かがウェブサイトに入らないと、アプリケーションがスリープしてジョブが機能しなくなり、電子メールが送信されないということです。
私の質問は - 私は50分ごとに機能を実行し、誰かがウェブサイトに入ったかどうかに依存しないスケジューラが必要な場合はどうすればよいですか?
あなたのサイトを常に稼働させるために何らかの種類のサイトモニタを使用してください – Aristos
[あなたのASP.NETアプリケーションがシャットダウンしないようにすることはできますか?](http://stackoverflow.com/questions/1306380/can-あなたはあなたのasp-net-application-shut-downから) –
それ以外に、アプリケーション初期化モジュールhttp://www.iis.net/downloads/microsoft/application-initializationがあります。しかし、それはIIS 7.5以上、およびフレームワーク4.0以上でのみ機能します。 –