2

長時間実行されるバックグラウンド処理タスクを実行する WebAPI アプリケーションを作成しています。

IIS でプールのリサイクルを無効にした後でも、テスト データの読み込みタスクが System.Threading.ThreadAbortException によって強制終了されていることに気付きました。Web アプリケーション内で非常に長時間 (数時間) 実行されるバックグラウンド タスクを実行する方法があることは知っていますが、それがどのように正確に行われるのかはわかりません。特定の構成設定、コーディング手法、 Wen.configパラメータなど...誰かがこれを行う実用的な方法を共有できますか?

4

2 に答える 2

2

IIS/ASP.Net を使用して実行時間の長いプロセスを実行したくない場合は、そのように設計されていません。

Web.API での最初の呼び出しにのみ使用して、MSMQ を使用するか、別のプロセスに何をすべきかを指示するテーブルに行を挿入して、サービスを開始します。

別のアプリケーションを作成します。コンソール アプリケーションでは、Windows スケジューラを使用してアプリを定期的に実行し、新しい作業項目を確認します。または、作業項目ストアを定期的にチェックする Windows サービス。その後、ThreadPool などを使用して、プロセスを非同期に実行できます。

于 2014-01-16T05:17:24.007 に答える
0

私の問題に対する最良の答えは、セルフホステッド WebAPI と TopShelf Windows サービスの実装を組み合わせることです。このようにして、WebAPI コントローラー コードを通常の方法で記述でき、実行時間の長いタスクが IIS によって強制終了されることはありません。

助けてくれてありがとう!

-ユージーン

于 2014-01-17T00:38:28.143 に答える