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