使用失败的请求跟踪排查经典 ASP 错误

适用于: Internet Information Services

Internet Information Services(IIS)中内置的出色故障排除功能之一是失败的请求跟踪。 借助此功能,可以在服务器上配置跟踪规则,从而为定义的自定义故障条件创建详细的故障排除日志文件。 例如,可以通过创建用于创建 HTTP 401 错误的日志文件的跟踪规则来捕获身份验证失败的详细信息。

IIS 中的失败请求跟踪可以配置为被动跟踪失败。 这意味着,你可以将跟踪规则添加到 IIS,这些规则将在发生错误时创建日志文件,即使你没有主动监视服务器。 例如,本文中的步骤演示如何创建跟踪规则,以便在发生 HTTP 500 错误时创建跟踪日志。 这种被动跟踪方法称为“无重现”跟踪,这意味着你可以定期检查服务器的日志,以检查是否发生了任何故障,然后仅在 IIS 创建日志时才采取措施。

使用用户访问控制

若要确保使用具有完全管理权限的帐户执行本文中的步骤,请使用以下方法之一:

  • 使用本地管理员帐户登录到计算机。
  • 如果使用具有管理权限的帐户而不是本地管理员帐户登录,请使用“以管理员身份运行”选项打开所有应用程序和所有命令提示符会话。

这些条件是必需的,因为 Windows 中的用户帐户控制(UAC)安全组件可防止管理访问 IIS 配置设置。 有关 UAC 的详细信息,请参阅 用户帐户控制

安装失败的请求跟踪

默认情况下,IIS 上未安装失败的请求跟踪。 根据 Windows 版本安装失败的请求跟踪。

Windows 客户端操作系统

  1. 选择“开始”>“控制面板”
  2. 控制面板中,选择“程序和功能>打开或关闭 Windows 功能”。
  3. 展开 Internet Information Services 万维网服务>>运行状况和诊断。
  4. 选择“跟踪,然后选择“确定”。

Windows Server 操作系统

  1. 选择“开始”,指向“管理工具”,然后选择服务器管理器
  2. “服务器管理器层次结构”窗格中,展开“角色”,然后选择“Web 服务器”(IIS)。
  3. “Web 服务器”(IIS) 窗格中,滚动到 “角色服务 ”部分,然后选择“ 添加角色服务”。
  4. “添加角色服务向导”的“选择角色服务”页上,选择“跟踪”,然后选择“下一步”。
  5. “确认安装选择 ”页上,选择“ 安装”。
  6. “结果 ”页上,选择“ 关闭”。

有关安装 IIS 失败请求跟踪的详细信息,请参阅 跟踪 <跟踪>

如何启用失败的请求跟踪

  1. 选择“开始”,指向“管理工具”,然后选择“Internet Information Services”(IIS)管理器
  2. “连接 ”窗格中,选择要为其配置失败请求跟踪的服务器连接、站点、应用程序或目录。
  3. “操作 ”窗格中,选择“ 失败的请求跟踪...”
  4. “编辑网站失败请求跟踪设置 ”对话框中配置以下选项:
    • 选中“启用”复选框以启用跟踪。
    • 保留默认值或输入要在其中存储失败请求日志文件的新目录。
    • 输入要在“最大跟踪文件数”框中存储 的失败请求跟踪文件 数。
  5. 选择“确定”

备注

可以针对经典 ASP、ASP.NET 或其他特定条件自定义设置,但针对 HTTP 500 错误的通用规则对于发现 Web 服务器上的各种错误条件非常有用。

还可以使用以下语法使用 AppCmd.exe 实用工具从命令提示符启用失败的请求跟踪:

appcmd.exe set config -section:system.applicationHost/sites /[name='Default Web Site'].traceFailedRequestsLogging.enabled:"True" /commit:apphost

appcmd.exe set config -section:system.applicationHost/sites /[name='Default Web Site'].traceFailedRequestsLogging.directory:"%SystemDrive%\inetpub\logs\FailedReqLogFiles" /commit:apphost

appcmd.exe set config -section:system.applicationHost/sites /[name='Default Web Site'].traceFailedRequestsLogging.maxLogFiles:"50" /commit:apphost

排查经典 ASP 错误

在本部分中,我们将使用经典 ASP 生成一些错误,以检查失败请求跟踪如何帮助识别潜在问题。 尽管这些示例面向了解失败原因的特定情况,但你可以使用提供的技术来排查失败原因未知的情况。

排查 HTTP 500 错误

IIS 在 ASP 页无法执行时返回 HTTP 500 错误,如果没有 IIS 的失败请求跟踪功能,这些 HTTP 500 错误可能难以进行故障排除。 这是因为 ASP 错误通常在系统未主动进行故障排除时发生,因此有时唯一的选择是搜索 IIS 活动日志,并希望 ASP 模块在日志条目中返回失败请求的其他信息。 在以下使用失败请求跟踪的示例中,你有一个详细的失败记录,用于排除故障。

如何为 HTTP 500 错误添加跟踪规则

以下步骤为 HTTP 500 错误配置失败请求跟踪规则,稍后将用它来排查经典 ASP 错误消息:

  1. 选择“开始”,指向“管理工具”,然后选择“Internet Information Services”(IIS)管理器
  2. “连接 ”窗格中,转到要为其配置失败请求跟踪的连接、站点、应用程序或目录。
  3. 在“开始”窗格中,双击“失败请求跟踪规则”。
  4. “操作 ”窗格中,选择“ 添加...”
  5. 在“添加失败请求跟踪规则”向导的“指定要跟踪的内容”页上,通常会选择要跟踪的内容类型。 在这种情况下,接受所有内容的默认值,然后选择“ 下一步”。
  6. “定义跟踪条件 ”页上,在 “状态代码” 文本框中输入 500,以便跟踪 HTTP 500 错误,然后选择“ 下一步”。
  7. “选择跟踪提供程序 ”页上,接受默认值,然后选择“ 完成”。

创建调用无效 COM 类的页面

在本部分中,你将检查尝试创建无效 COM 类实例的 ASP 页,这种情况通常是通过拼错有效的 COM 类生成的。 若要测试此问题,请将以下 ASP 代码保存为已启用 HTTP 500 错误的失败请求跟踪的网站 wwwroot 文件夹中Bad_class.asp

<html>
<body>
<h1>Bad Class</h1>
<%
   Set objObject = CreateObject("Bad.Class.Name")
%>
</body>
</html>

使用 Web 浏览器浏览到此文件时,IIS 应返回 HTTP 500 错误消息,IIS 将创建在 %SystemDrive%\Inetpub\FailedRequestLogFiles\W3SVCnnn 文件夹中创建的失败请求跟踪日志,其中 W3SVCnnn 包含 IIS 管理器中列出的网站的唯一标识符。 失败请求跟踪日志是 XML 文件,IIS 会创建一个 XSL 文件,该文件将 XML 转换为可以在 Internet Explorer 中打开的演示文稿格式。

在 Internet Explorer 中读取跟踪日志

在 Edge 浏览器中使用 Internet Explorer 或 IE 模式打开失败的请求跟踪日志文件时,请求摘要会显示各种信息。 此摘要包含失败条件的常规环境信息,例如执行 URL、应用程序池、身份验证类型和用户名,以及其他信息。 你注意到失败的原因是状态代码,并且状态为 HTTP 500 错误。

在摘要的“错误和警告”部分中,可以看到视图跟踪链接,如下图所示:

显示失败跟踪日志错误的请求摘要的浏览器窗口的屏幕截图。

选择 视图跟踪 链接时,浏览器将跳转到发生 ASP 脚本失败的跟踪部分。 如果展开单个跟踪事件,可以查看事件的特定详细信息,例如物理文件路径、行号、ASP 错误代码和说明,以及导致失败的 ASP 代码摘录,在本例中,需要尝试实例化无效的 COM 类。

下图显示了一个示例:

浏览器窗口的屏幕截图,其中显示了发生错误的跟踪部分。

排查页面速度缓慢的问题

可以对失败请求跟踪进行配置,使其为超过指定的时间间隔的页面生成日志文件,而不仅仅是针对 HTTP 错误。 在实际示例中,如果你的 Web 用户抱怨网站的某些部分有时看起来很慢,但他们不知道哪些页面似乎受到影响,则可以创建一个跟踪规则,以在任何页面超过该间隔时创建日志文件。 这样,可以通过等待 IIS 创建列出页面的日志文件,将故障排除范围缩小到任何受影响的页面。 如果没有失败请求跟踪,可以查询 IIS 活动日志,查找执行时间较长的页面,但这只会将范围缩小到出现问题的页面列表,而不是问题本身。 在以下示例中,你将在慢速页面中找到失败的源。

如何为慢速内容添加跟踪规则

以下步骤为超过特定时间段的请求配置失败请求跟踪规则,稍后可以使用该规则排查 ASP 页面速度缓慢的问题。

  1. 选择“开始”,指向“管理工具”,然后选择“Internet Information Services”(IIS)管理器
  2. “连接 ”窗格中,转到要为其配置失败请求跟踪的连接、站点、应用程序或目录。
  3. 在“开始”窗格中,双击“失败请求跟踪规则”。
  4. 突出显示在上一示例中创建的规则,然后在“操作”窗格中选择“删除”。
  5. “操作 ”窗格中,选择“ 添加...”
  6. 在“添加失败请求跟踪规则”向导的“指定要跟踪的内容”页上,通常会选择要跟踪的内容类型。 在这种情况下,接受所有内容的默认值,然后选择“ 下一步”。
  7. 在“ 定义跟踪条件 ”页上:
    • 清除状态代码。
    • 选择“花费的时间”(以秒为单位)。
    • 输入 5 秒数。
    • 选择下一步
  8. “选择跟踪提供程序 ”页上,接受默认值,然后选择“ 完成”。

创建一个循环无休止的页面

在此错误条件下,你将检查一个无休止地循环的页面。 当用户会话无法正确退出循环(例如代码循环遍历数据库表中的列表记录时)时,通常会导致此问题。 若要测试此问题,请将以下 ASP 代码保存为已启用失败请求跟踪的网站 wwwroot 文件夹中Slow_page.asp

<html>
<body>
<h1>Slow Page</h1>
<%
   Do
      If Response.IsClientConnected = False Then
         Exit Do
      End If
   Loop
%>
</body>
</html>

使用 Web 浏览器浏览到此文件时,Web 浏览器中不应显示任何错误,但浏览器可能永远不会返回页面并最终超时。

备注

关闭 Web 浏览器后,将写入此页面以退出循环。 如果要在达到脚本超时之前退出循环,则应在 10 秒后手动关闭浏览器。

五秒钟后,IIS 会在 SystemDrive%\Inetpub\FailedRequestLogFiles\W3SVCnnn 文件夹中创建失败的请求跟踪日志%,其中 W3SVCnnn 包含网站 IIS 管理器中列出的唯一标识符。

在 Internet Explorer 中读取跟踪日志

如前面的示例所示,在 Microsoft Edge 浏览器中使用 Internet Explorer 或 IE 模式打开失败的请求跟踪日志文件时,重要信息会显示在请求摘要。 此摘要包含失败条件的常规环境信息,例如执行 URL、应用程序池、身份验证类型和用户名,以及其他信息。 请注意,失败的原因是所花费的时间量,时间略超过 5 秒,即在“失败的请求跟踪”规则中输入的时间。

备注

你还注意到,响应的 HTTP 状态代码是 HTTP 200,这是成功的响应。 这是通常更难诊断慢页面的因素之一-响应成功,这使得它们更容易找到。

在摘要的“错误和警告”部分中,可以看到视图跟踪链接,如下图所示:

显示失败跟踪日志警告的请求摘要的浏览器窗口的屏幕截图。

选择视图 跟踪链接时,浏览器将转到发生 ASP 脚本失败的跟踪部分。 如果展开单个跟踪事件,可以查看事件的特定详细信息,例如物理文件路径、行号、ASP 错误代码和说明,以及创建日志文件时执行的 ASP 代码摘录。 通过使用此信息,可以检查 ASP 页,并找到在永不结束循环中执行的代码行。

下图显示了一个示例:

浏览器窗口的屏幕截图,其中显示了发生警告的跟踪部分。

详细信息

有关 IIS 中失败的请求跟踪的详细信息,请参阅以下文章: