QA@IT

ASP.NETで定期タスクを実行するには?

7000 PV

ASP.NETでWindowsサービスのような機能を実装する方法
を参考に定期的に処理を行う実装しました。
しかし、アクティブなセッションがないとき、実行されません。

レンタルサーバー上で定期的にメールを送信するタスクを実行したいのですが
よい対応策は無いでしょうか?

回答

ああ、レンタルサーバなんですね。
自前のサーバなら接続がなくてアプリケーションがおちるまでの時間を調整したりするんですたが、それができないですよねぇ。

同様の仕組みで自分自身のトップページにアクセスする処理を定期的に実行させる、というのはどうでしょう。
それでうまくいくかどうかわかりませんが。

外部から定期的にたたいてもらうのがいいんでしょうけどね。
ついでにサイトの死活監視を行う仕組みを外部に用意してしまうのがいいと思いますが、どうでしょうかね。

編集 履歴 (0)

結果良好でした。

とりあえず、自分自身(同一アプリケーションプール)から
定期的にリクエストを送り続けることによって
外部からのリクエストがなくてもアプリケーションが終了することなく
無事、定期タスクを実行できました。

ASP.NETでWindowsサービスのような機能を実装する方法
のIsTriggerメソッド内でWebClientを使ってページの内容を取得する
という方法を採用しました。

余談。
実行予定時間がAM4:00だったのですが
気になって気になって、メーラーと睨めっこしてました(^_^;
メールが届いたときには感動でした(ToT)v

ありがとうございました。

編集 履歴 (0)

アプリケーションプールが別なサブドメインを構築できるならそれなりに有効かもしれませんね。
試してみた結果も知りたいところです。

編集 履歴 (0)

ご回答ありがとうございます。

自分自身のトップページにアクセスする処理を定期的に実行させる

思いつきませんでした。。。
言われてみれば、まったくその通りですね。
早速試してみます。

本来であれば外部から定期的にリクエストを送れたらよいのですが、
その環境を準備することができず、
どうしたものかと困っておりました。

幸いサブドメインが使えて、
アプリケーションプールがサブドメイン単位に設定できますので
互いに死活監視を行う仕組を導入したいと思います。

ありがとうございました。

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。