5

懸念:

IISがいつでもアプリプールをリサイクルできることを説明する投稿/ブログを読みました。これは、IISがアプリプールをリサイクルして長時間実行プロセスを終了する可能性があるため、(IISリサイクルアプリプールに関して)同期または非同期の長時間実行プロセスを呼び出すかどうかは問題ではないことを意味しますか?この場合、これが起こらないようにするための一般的な方法は何ですか?

public Task<ActionResult> LongRunningProcessAsync(SubmitFileModel aModel)

    {
        return Task.Run( () => LongRunningProcess( aModel) );
    }
4

2 に答える 2

4

HostingEnvironmentには静的メソッドRegisterObjectがあり、これを使用すると、アプリケーションの登録済みオブジェクトのリストにオブジェクトを配置できます。

フィル・ハークによると...

ASP.NETがAppDomainを破棄すると、最初にすべての登録済みオブジェクトでStopメソッドを呼び出そうとします。ASP.NETがこのメソッドを呼び出すとき、コードは、作業が完了するまでこのメソッドが戻らないようにする必要があります。

または、IISでホストされていないサービスを作成することもできます。

于 2012-12-06T16:35:32.587 に答える
0

この場合、これが起こらないようにするための一般的な方法は何ですか?

アプリケーションドメインは、RegisterObjectメソッドの使用の有無にかかわらず、リサイクルプロセスでアンロードされます。バックグラウンド作業が完了するまでの時間(デフォルトでは30秒)のみが与えられます。この「しばらく」を超える長時間実行ジョブがある場合、そのジョブは中止され、再起動時の自動再試行については誰も気にしません。

ASP.NETアプリケーションで長時間実行されるジョブを実行し、物事をシンプルに保ち、ASP.NET / IISの問題を忘れたい場合は、HangFireを見てください。永続ストレージ(SQL ServerまたはRedis)を使用し、リサイクルプロセス。

于 2014-06-10T17:07:52.793 に答える