2013-01-16 16 views
6

opublikowałem mój projekt w trybie debugowania i umieścić zarówno DLL i pliki PDB na moim serwerze,
teraz chcę uzyskać numer wiersza wyjątku za pomocą tych kodów:C# Numer Wyjątek linia jest zawsze zero (0)

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

ale nie wiem, dlaczego numer wiersza wyjątku jest zawsze zero -> 0
jak mogę to naprawić?

+0

Może to być pomocne: http://stackoverflow.com/questions/2827856/stack-trace-with-incorrect-line-number – dash

+3

Po prostu użyj 'ex.ToString()' zamiast mieszać ze śledzeniem stosu i oprawia się w ramki. – Oded

+0

hi, ale ex.ToString() nie zwraca numeru wiersza błędu! – MoonLight

Odpowiedz

6

Spróbuj

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

naprawdę doceniam to ... – MoonLight

+0

Czy nie "trace.GetFrame (trace.FrameCount - 1)" uzyskać najbardziej przodków ramki (a więc linii) kodu w głównej metody aplikacji? (lub tuż przed wywołaniem głównego kodu systemu?) –

0

Wystarczy użyć ex.ToString(). Sprawdziło się to dla mnie. Mam nadzieję, że to pomaga.