Номер строки исключения C # всегда равен нулю (0)

Я опубликовал свой проект в режиме отладки и поместил файлы dll и pdb на свой сервер,
теперь я хочу получить номер строки исключения, используя следующие коды:

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

но я не знаю, почему номер строки исключения всегда равен нулю -> 0
как я могу это исправить?


person SilverLight    schedule 16.01.2013    source источник
comment
Это может быть полезно: stackoverflow.com/questions / 2827856 /   -  person dash    schedule 16.01.2013
comment
Просто используйте ex.ToString() вместо того, чтобы возиться с трассировкой стека и фреймами самостоятельно.   -  person Oded    schedule 16.01.2013
comment
привет, но ex.ToString () не возвращает номер строки с ошибкой!   -  person SilverLight    schedule 16.01.2013
comment
дорогой тире, я видел эту ссылку - но проблема все еще существует в режиме выпуска!   -  person SilverLight    schedule 16.01.2013
comment
ex.ToString() возвращает весь StackTrace, а не только строку, в которой возникло исключение.   -  person Carsten    schedule 16.01.2013


Ответы (1)


Пытаться

System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true);
var stackFrame = trace.GetFrame(trace.FrameCount - 1);
var lineNumber = stackFrame.GetFileLineNumber();
person Tim Schmelter    schedule 16.01.2013
comment
Разве trace.GetFrame(trace.FrameCount - 1) не получает самый древний фрейм (и, следовательно, строку) кода в основном методе вашего приложения? (или непосредственно перед вызовом main в системном коде?) - person Jesse Chisholm; 15.01.2016