当 ASP(经典、VBScript)页面上发生错误时,生成的错误消息(如果设置为显示错误响应)以及完整的FREB 日志(如果您已打开)显示已处理的行号发生错误的 ASP 文件。
这非常有用,因为您可以查看文件,找到错误并修复它。或者至少,如果您的 ASP 文件只是一个不包含任何其他文件的文件,则可以。
另一方面,如果您的文件确实有任何<!-- #include -->
包含其他文件的指令,那么事情就不那么有用了。由于 ASP/IIS 包含在文件处理之前发生,因此行号不是磁盘上任何实际文件中的实际行号,而是由复制到主文件中的所有包含文件组成的文件中的行号各自的位置。当你有一个顶部有大约 30 个包含指令的文件,然后你被告知在第 592 行有一个错误,你最终完全不知道该行在哪个物理文件中,你只剩下 30文件,直到找到正确的文件。
不幸的是,据我所知,无法检索有关特定行最初属于哪个文件的信息,因此无法获得完全有用的错误消息版本。
但是服务器至少应该可以提供它实际正在处理的页面的源代码,以便您可以查看它,找到第 592 行并至少知道导致错误的行的内容和上下文是。
我不希望这可以在输出到浏览器的错误消息中提供(这将是一个明显的、巨大的安全漏洞),但它肯定应该很容易包含在包含成千上万的失败请求跟踪中关于文件执行的其他所有细节的行。可悲的是,我还没有找到真正做到这一点的方法。
有没有办法指示 IIS 提供已编译的 ASP 文件(作为纯文本)作为失败请求跟踪的一部分,以便错误消息中的行号实际上有用?