2013-01-16 102 views
6

我出版了我在調試模式下的項目,並把DLL和PDB文件在我的服務器,
現在我想用這些代碼以取得異常行號:C#異常行數始終爲零(0)

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

但我不知道爲什麼行數異常總是爲零 - > 0
我該如何解決它?

+0

這可能是有幫助的:http://stackoverflow.com/questions/2827856/stack-trace-with-incorrect-line-number – dash

+3

只需使用'ex.ToString()'而不是搞亂堆棧跟蹤和自己畫框。 – Oded

+0

嗨,但ex.ToString()不會返回錯誤的行號! – MoonLight

回答

6

嘗試

System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true); 
var stackFrame = trace.GetFrame(trace.FrameCount - 1); 
var lineNumber = stackFrame.GetFileLineNumber(); 
+0

真的很感激它... – MoonLight

+0

不是'trace.GetFrame(trace.FrameCount - 1)'在你的應用程序的主要方法中獲得最古老的框架(並因此)的代碼? (或者在系統代碼中調用main之前?) –

0

只需使用ex.ToString()。它適用於我。 希望它有幫助。