4

ASP.net ヘルス モニタリングを使用して、asmx Web サービスから未処理の例外をログに記録しようとしています。web.config で正常性監視を有効にしましたが、何もログに記録されません。正常性監視は asmx Web サービスで機能しますか? 私はグーグルで検索しましたが、他の人が同じ質問をしたようですが、明確な答えが得られませんでした.

4

5 に答える 5

9

質問に対する回答がない限り、回答を投稿しないでください。質問以外の答えが中途半端で、読者を混乱させます。正常性監視は、「実際には処理されない」ASP.NET 例外または Application_Error イベントとは関係ありません。

答えはノーだ。私はこれを少し掘り下げましたが、何らかの理由で、Web メソッド内で発生した例外が正常性監視プロバイダーに到達することはありません。それらを捕まえて自分で処理する必要があるようです。

于 2009-04-02T08:44:49.283 に答える
1

未処理の例外の通常の解釈と、Tom が参照している解釈には違いがあります。トムが言及しているのは、本当に未処理の例外であり、w3wp.exe プロセスを (ログに記録する前に) 強制終了します 。 /04/07/spawning-threads-in-aspnet-can-be-dangerous

通常の未処理の例外により、例外が発生し、ユーザー/呼び出し先にエラー ページが表示されます。ただし、w3wp.exe プロセスがクラッシュすることはありません。これらの例外は、ヘルス モニタリングによって検出される必要があります。

于 2008-10-09T20:24:14.377 に答える
1

Global.asax では、Visual Studio によって自動生成されたものを使用する場合、コードを Application_Error メソッドに追加して、例外を処理し、選択した方法でそれらをログに記録できます。Init メソッドをオーバーライドして、クラスの Error イベントのイベント ハンドラーを追加することもできます。

どちらの場合も、役に立たないバニラの EventArgs オブジェクトしか取得できませんが、発生した例外を取得するには HttpContext.Current.Server.GetLastError() を使用できます。

別の投稿者が述べたように、これは、非同期に実行されているデリゲート、自分で開始したスレッド、または Page.RegisterAsyncTask() を使用して作成された非同期ページ タスクによってスローされる例外をキャッチしない場合があります。これらについては、実装に例外のバックストップがあることを常に確認して、例外をキャッチし、IIS ワーカー プロセスが中止されないようにする必要があります。

于 2008-10-23T03:06:09.613 に答える
0

この場合、CALM製品が機能するはずです。そうでない場合はお知らせください-私が書きました;-)

于 2008-10-13T03:38:14.250 に答える
0

未処理の例外がどの種類の try/catch 内でも実行されていないため、機能しません。そのため、ログに記録できません。次のブログ投稿をご覧ください: http://blogs.msdn.com/tom/archive/2007/12/04/unhandled-exceptions-causing-asp-net-to-crash-in-net-2-0。 aspx

于 2008-10-09T14:55:33.087 に答える