我以调试模式发布了我的项目,并将dll和pdb文件放在服务器上,
现在我想使用以下代码获取异常行号:
System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true);
Response.Write("Line: " + trace.GetFrame(0).GetFileLineNumber());
但我不知道为什么异常的行号总是为零 -> 0
我该如何修复它?
我以调试模式发布了我的项目,并将dll和pdb文件放在服务器上,
现在我想使用以下代码获取异常行号:
System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true);
Response.Write("Line: " + trace.GetFrame(0).GetFileLineNumber());
但我不知道为什么异常的行号总是为零 -> 0
我该如何修复它?
尝试
System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true);
var stackFrame = trace.GetFrame(trace.FrameCount - 1);
var lineNumber = stackFrame.GetFileLineNumber();
trace.GetFrame(trace.FrameCount - 1)
获得的不是您的应用程序主方法中最祖先的代码框架(因此为行)吗?(或者是系统代码中对主函数的调用之前的代码?) - Jesse Chisholm
ex.ToString()
,而不要自己操作堆栈跟踪和帧,这样会更简单。 - Odedex.ToString()
返回整个 StackTrace,而不仅仅是抛出异常的那一行。 - Carsten