在ASP,C#和VB.Net中如何检索当前行号

时间:2011-10-20 00:11:19

标签: c# asp.net vb.net vbscript asp-classic

ASP,C#,VB.NET是否有办法检索代码中的哪一行作为处理命令?

实施例

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

输出:你的第2行

2 个答案:

答案 0 :(得分:6)

你可以这样做:

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

请注意,有几点需要注意。

  1. 您需要确保可以访问源文件和PDB。
  2. 这将为您提供您所在的方法的当前行,而不是您的确切位置。
  3. Jit可能会执行导致错误信息的优化,例如内联方法。
  4. 对于VB.NET,它是一样的:

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

    就经典ASP而言 - 我不相信这是可能的。

答案 1 :(得分:1)

虽然vcsjones的答案可能正是您正在寻找的,但为了调试/排除VB.NET故障,您可能需要查看Err对象的Erl属性。它返回一个整数,表示最后执行的语句的行号 - 按行号,表示数字标签,而不是源文件的物理行号。

在关键点使用行号加密一个代码有助于排除意外异常,并且不需要源文件和PDB来使Erl工作。