15

エラーが HttpApplication.Error イベントによって処理された後、ASP.NET 要求ライフ サイクルのどの部分が発生するかを知りたいです。具体的には、http://msdn.microsoft.com/en-us/library/bb470252.aspx#Stagesにリストされているイベントのうち、エラー後に発生するのはどれですか? EndRequest がまだ起動していることはわかっています。PreSendRequestHeaders と PreSendRequestContent も同様に起動していると思われますが、これら以外はわかりません。

ライフサイクルのどの時点でエラーが発生するかによって異なりますか? エラーハンドラで Server.ClearError() を呼び出すかどうかに依存しますか?

エラーハンドラーから HttpApplication.CompleteRequest() を呼び出す必要があるかどうかわからないため、この質問をしています。

4

5 に答える 5

3

最善の方法は、サーバーの最後のエラーアプリケーション ドメインの例外をキャッチすることです。

これらはすべて Global.asax.cs ファイルで実行できます。

次の手順を確認してください。

1- Global.asax.cs で、最後のエラーをキャッチしてログに記録します。

    protected void Application_Error(object sender, EventArgs e)
    {
        Exception exception = Server.GetLastError();
        Server.ClearError();
        log.Error("Application Error caught in Global ", exception);
    }

2- AppDomain で UnhandledException イベントのイベント ハンドラーを追加します。これを Application_Start に追加する必要があります。

    protected void Application_Start(object sender, EventArgs e)
    {
        //....
        AppDomain.CurrentDomain.UnhandledException 
              += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
    }       

3- そして、CurrentDomain_UnhandledException の実装は次のとおりです。

    void CurrentDomain_UnhandledException(object sender, 
                                                   UnhandledExceptionEventArgs e)
    {
      if (e != null)
        log.Error("Domain Unhandled Exception: ", e.ExceptionObject as Exception);
    }

ハッピーコーディング:)

于 2012-09-05T11:27:29.850 に答える
0

エラーが発生した場合でも、LogRequest イベントが発生します。LogRequest イベントのイベント ハンドラーを提供して、要求のカスタム ログを提供できます。詳細については、http://msdn.microsoft.com/en-us/library/system.web.httpapplication.logrequest.aspxを参照してください。

アプリケーションがカスタム エラー出力を生成する場合は、HttpApplication.Error イベントの ClearError メソッドを呼び出して、ASP.NET によって生成される既定のエラー メッセージを抑制します。

于 2011-09-14T09:13:01.373 に答える
0

Error イベントを発生させる例外には、GetLastError メソッドを呼び出すことでアクセスできます。アプリケーションがカスタム エラー出力を生成する場合は、ClearError メソッドを呼び出して、ASP.NET によって生成される既定のエラー メッセージを抑制します。

于 2012-03-27T11:01:42.927 に答える
0
void Application_Error(Object sender, EventArgs e)

global.asax

http://msdn.microsoft.com/en-us/library/24395wz3%28v=vs.100%29.aspx
http://msdn.microsoft.com/en-us/library/fwzzh56s%28v=vs.100 %29.aspx

于 2012-08-26T16:52:01.860 に答える
0

確認はしていませんが、場合によると思います。

エラーは、任意のページ イベント (Init/Load/PreRender) で発生する可能性があります。エラーが発生した後、エラーをクリアすると、ページのライフサイクルは元の場所から続行されます。

于 2012-03-20T18:50:13.427 に答える