Supopse未処理の例外(または既知の重大で回復不能なエラー)があります。最も恐ろしい状況はセキュリティ違反ですが、それは私の状態がひどく馬鹿にされていることを意味するものすべてに当てはまる可能性があり、安全に続行することは期待できません。
私は何をしますか?
従来のアプリケーションでは、通常の手法はプロセスをすばやく終了することです。できるだけ早く。私はProcess.Exit、TerminateProcess、die、または環境にあるその他のツールを「END.NOW」と呼んでいます。Eric Lippertの投稿は、この態度の理由をよく表しています。
IISで実行されている実稼働ASP.NETアプリケーションでは、それほど単純ではありません。私は確かに現在のプロセスを終了し、イベントログまたはどこにでもエラーを咳をすることができます。これは基本的に、未処理の例外で発生することです。ただし、次にリクエストが届いたとき、IISは新しいワーカープロセスを起動するだけです。私の致命的なエラーが一時的な問題だったとしたら、それは素晴らしいことです。
しかし、私の問題が私のプロセスの存続期間を超えて続く場合、新しい問題はこれ以上良くなることはありません。初期化コードや再試行によってさらに複雑になる可能性があります。さらに、IISが同じアプリケーションプール内で複数のワーカープロセスを実行している場合、プロセスを強制終了してもアプリケーションは強制終了されません。論理的に言えば、他のすべての労働者も馬鹿にされて、まだそれを知らないかもしれません。
これまでのところ、私は2つのオプションしか考えていません。
- プロセスを終了し、最高のものを期待してください。アプリが再起動されることを知っているので、これは「catch(Exception){}」とほとんど同じです。ほとんど満足できません。
- 「手を差し伸べる」ことで、IISにアプリを無効にしたり、IISやマシンを停止したりするように指示します。これは、残忍なハッキングのようです。さらに、セキュリティの高い資格情報が必要になる可能性が高いと思います。侵害された可能性のあるプロセスの終了時に、それらを取得するのは適切な時期ではないようです。