C#异常行号始终为零(0)

13

我以调试模式发布了我的项目,并将dll和pdb文件放在服务器上,
现在我想使用以下代码获取异常行号:

   System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true);
   Response.Write("Line: " + trace.GetFrame(0).GetFileLineNumber());

但我不知道为什么异常的行号总是为零 -> 0
我该如何修复它?


1
这可能会有帮助:https://dev59.com/WnE85IYBdhLWcg3wVR-g - dash
3
只需使用 ex.ToString(),而不要自己操作堆栈跟踪和帧,这样会更简单。 - Oded
嗨,但是 ex.ToString() 不会返回错误的行号! - SilverLight
亲爱的 Dash,我看到了那个链接 - 但问题在发布模式下仍然存在! - SilverLight
ex.ToString() 返回整个 StackTrace,而不仅仅是抛出异常的那一行。 - Carsten
1个回答

11

尝试

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
在我的情况下没有起作用,仍然是0。 - Amitai Weil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接