4

Global.asax.cs にこの Application_Error イベントがあり、アプリケーションで未処理の例外が発生しました。エラーメッセージを取得できました。私が取得しようとしているのは、例外が発生したクラス名とメソッド名です。これにより、例外の原因と原因を簡単に追跡できます。助けてください。

Global.asax.cs

protected void Application_Error(object sender, EventArgs e)
    {
        var errMsg = Server.GetLastError().Message;
        if (string.IsNullOrWhiteSpace(errMsg)) return;
        //Get Class name and method name
        //ErrorLog.SaveLog(errMsg, Classname, Methodname);
        Context.ClearError();
    }
4

2 に答える 2

3

この情報は、StackTrace を使用してコール スタックで見つけることができます。 http://msdn.microsoft.com/en-us/library/system.diagnostics.stackframe.aspxの例を参照してください。

于 2013-03-20T08:30:02.237 に答える
2

最も簡単な方法は、ログに記録することです。

Server.GetLastError().ToString()

これには、例外と内部例外のエラー メッセージとスタック トレース、および場合によってはその他の有用な情報 (*) が含まれます。

Server.GetLastError().StackTrace外側の例外のスタックトレースのみを提供することに注意してください。あまり役に立ちません。

(*) 「その他の有用な情報」とは、例外派生クラスをオーバーライドToStringして、その例外タイプに固有の追加情報を追加できることを意味します。たとえば、SqlExceptionはオーバーライドToStringしてClientConnectionId.

于 2013-03-20T09:39:02.620 に答える