2

毎晩のジョブ プロセス ドキュメントによって呼び出される Web サービスがあります。各ドキュメントはキューに入れられ、独自のバックグラウンド プロセッサで実行されます。負荷によっては、このプロセスに数時間または数分かかる場合があります。何もしていないのなら生かしたくありません。ただし、スレッドが生成されてすぐに戻ると、スレッドが動作していてもアイドルクロックが開始されます。スレッドを IsBackground に設定していませんが、アイドル状態で終了します。私のテストでは、アイドル時間を 1 分に設定しました。サービスを「ALIVE」のままにしておく方法はありますか

Web サービスのコードは次のとおりです。

public class LetterInitiateWS : System.Web.Services.WebService
    {

        private static Processor processor = new Processor();
        [WebMethod]
        public void ExecuteBulkRun()
        {
            var thrd = new Thread(() => ThreadExecuteBulkRun());
            thrd.IsBackground = false;
            thrd.Start();

        }

        private void ThreadExecuteBulkRun()
        {
            processor.ExecutBulkRun();
        }

    }
4

3 に答える 3

0

これを処理するために、ThreadExecuteBulkRun で作業しているときに静的クラスを作成しました。この静的クラスには、IIS のアイドル タイマーをリセットする Web サービス ページを 5 分ごとにヒストするタイマーがあります。プロセスが完了すると、静的クラスは Web ページへのアクセスを停止します。

于 2011-12-05T16:26:59.320 に答える
0

コーディングを必要としないソリューションの場合は、デフォルトのアイドル タイムアウト値の 20 分を 0 に変更して、IIS の非アクティブ モニターを無効にするだけです。アプリケーション プールの [詳細設定] に移動します。これは、 「プロセスモデル」セクション。

于 2011-05-13T16:05:58.707 に答える
0

あなたの最善の策は、これを2つの別々のプロセスに分割することだと思います. IIS/ASP.NET ベースのプロセスで問題が発生し、それを維持しようとします。

私があなただったら、次のようなことをしたいと思います:

  1. DB/ファイル/キューにレコードを書き込み、実行時間の長いスレッドを開始する必要があることを知らせます。
  2. Windows サービスでシグナルの DB/ファイル/キューを監視してから、処理を開始します。

ここの回答にも同様の提案があります。

実行時間の長いデータベース タスクの実行中の Web サービス タイムアウトの処理

長時間実行される Web サービス アーキテクチャ

実行時間が長く、リソースを大量に消費する Web サービスを設計するための推奨事項

于 2010-12-03T23:03:32.757 に答える