В ASP, C # и VB.Net, как получить текущий номер строки - PullRequest
4 голосов
/ 20 октября 2011

Имеет ли ASP, C #, VB.NET способ извлекать, какая строка включена в коде в качестве команд обработки?

Пример

1 <%
2 response.write("Your on line " & retreiveCurrentLineNumber)
3 %>

Вывод: Вы в сети 2

Ответы [ 2 ]

6 голосов
/ 20 октября 2011

Вы можете сделать это:

var line = new StackFrame(0, true).GetFileLineNumber();

Обратите внимание, что есть несколько предостережений для этого.

  1. Вам необходимо убедиться, что исходный файл и PDB доступны.*
  2. Это даст вам текущую строку метода , в котором вы находитесь, а не точно, где вы находитесь.
  3. Jit может выполнять оптимизацию, которая приводит к неверной информации, напримерметод inline.

Для VB.NET это то же самое:

Dim line As Integer = New StackFrame(0, True).GetFileLineNumber()

Что касается классического ASP - я не верю, что это возможно.

1 голос
/ 16 ноября 2011

Хотя ответ vcsjones может быть именно тем, что вы ищете, для целей отладки / устранения неполадок в VB.NET вы можете взглянуть на свойство Erl объекта Err. Он возвращает целое число, обозначающее номер строки последнего выполненного оператора - и по номеру строки, что означает числовую метку, а не номер физической строки исходного файла.

Перечисление кода с номерами строк в критических точках полезно при устранении непредвиденных исключений, и для работы Erl не требуется исходный файл и PDB.

...