获取类别名称和方法名称从异常详细信息发生异常

时间:2013-03-20 08:25:01

标签: c# asp.net-mvc asp.net-mvc-3

我的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();
    }

2 个答案:

答案 0 :(得分:3)

您可以使用StackTrace在调用堆栈中找到此信息,请参阅http://msdn.microsoft.com/en-us/library/system.diagnostics.stackframe.aspx上的示例。

答案 1 :(得分:2)

最简单的方法是记录:

Server.GetLastError().ToString()

这包括异常的错误消息和堆栈跟踪以及任何内部异常,在某些情况下还包括其他有用信息(*)。

请注意,Server.GetLastError().StackTrace只会为您提供外部异常的堆栈跟踪,不太有用。

(*)通过"其他有用信息",我的意思是任何Exception派生类都可以覆盖ToString以添加特定于该异常类型的其他信息。例如,SqlException会覆盖ToString以附加ClientConnectionId