使用 IIS 7 中的跟踪排查失败的请求

适用于: Internet Information Services 7.0

注意

本文适用于 IIS 7.0。 有关较新版本,请参阅 使用 IIS 8.5 中的跟踪排查失败的请求。

基于请求的跟踪可在独立 IIS 服务器和 Azure Web 应用中使用,并提供一种方法来确定请求的确切发生情况以及原因(如果可以重现所遇到的问题)。 一些问题(例如,一些请求的性能差,其他请求出现身份验证相关故障,或来自 ASP 或 ASP.NET 的服务器 500 错误)很难排查,除非你在问题发生时捕获了跟踪。 本文讨论 IIS 服务器上的失败请求跟踪。 有关使用 Azure Web 应用执行此操作的信息,请参阅使用 Visual Studio 对 Azure 应用服务中的应用进行故障排除

失败的请求跟踪旨在缓冲请求的跟踪事件,并且仅在请求失败时将其刷新到磁盘,在该请求中提供“失败”的定义。 如果想知道为何收到 404.2 错误消息或请求开始挂起,请使用失败的请求跟踪。

本文中阐释的任务包括:

  • 启用失败的请求跟踪模块。
  • 配置失败的请求跟踪日志文件语义。
  • 定义要保留失败请求跟踪的 URL,包括失败定义和要跟踪的区域。
  • 生成失败条件并查看生成的跟踪。

先决条件

安装 IIS

你必须先安装 IIS 7 或更高版本,然后才能执行本文中的任务。 浏览到 http://localhost/ 查看是否已安装 IIS。 如果未安装 IIS,请参阅 在 Windows Server 2008 上安装 IIS,了解安装说明。 安装 IIS 时,请确保还安装以下功能:

  • ASP.NET(在万维网服务 - 应用程序开发功能 - ASP.NET 下)
  • 跟踪(在万维网服务 - 运行状况和诊断 - 跟踪下)

以管理员身份登录

确保用于登录的帐户是管理员帐户或者在管理员组中。

注意

默认情况下,“管理员”组中不会授予你完整的管理员用户权限。 你必须以管理员身份运行应用程序,可以通过右键单击应用程序图标并选择“ 以管理员身份运行”来执行此操作。

进行备份

在执行以下部分中的任务之前,必须备份配置。

若要备份配置,请执行以下步骤:

  1. 选择“启动>所有程序>附件”。

  2. 右键单击 命令提示符,然后选择“ 以管理员身份运行”。

    显示命令提示符的上下文菜单的屏幕截图,其中选择了“以管理员身份运行”。

  3. 在命令提示符下,运行以下命令:

    %windir%\system32\inetsrv\appcmd add backup cleanInstall
    

创建示例内容

  1. 导航到 %systemdrive%\inetpub\wwwroot

  2. 将内容移动到安全的位置(如果想要还原现有内容),或删除它。

  3. 创建一个空白文件并将其命名 为test.asp

  4. 在命令提示符中,导航到 \inetpub\wwwroot 中的test.asp文件。

  5. test.asp 文件中,粘贴以下内容:

    <h2>Failed Request Tracing Lab</h2><br>
    <br>Today's date is <% response.write(Date()) %>
    

禁用 ASP

必须为此任务禁用 ASP。 仅为了本文中的任务,作为示例而禁用 ASP。

禁用 ASP

  1. 打开“Internet Information Services (IIS)管理器” 。

  2. 双击“ISAPI 和 CGI 限制”

    显示选择了“I S A P I 和 C G I 限制”的“I S 管理器”的屏幕截图。

  3. 选择“Active Server Pages”。 在“操作”窗格中,选择“拒绝以禁用 ASP。

    显示“I S A P I 和 C G I 限制和操作”窗格打开的屏幕截图。

启用失败请求跟踪

启用失败请求跟踪后,需要配置日志文件所在的位置。 在此任务中,你将为默认网站启用失败请求跟踪,并指定将日志文件放在何处。 然后,你将配置要为其生成失败日志的失败。

步骤 1:为站点启用失败的请求跟踪并配置日志文件目录

  1. 使用管理员用户权限打开命令提示符,并导航到 %systemdrive%\windows\system32\inetsrv

  2. 运行 inetmgr 以打开 IIS 管理器。

  3. “连接 ”窗格中,展开计算机名称,展开 “站点”,然后选择“ 默认网站”。

  4. “操作”窗格中的“配置”下,选择“失败的请求跟踪”。

    显示“配置”下的“失败请求跟踪”的屏幕截图。

  5. 在“编辑网站失败请求跟踪设置”对话框中,配置以下设置

    • 选中“启用”复选框。
    • 保留其他设置的默认值。

    显示“编辑网站失败请求跟踪设置”对话框的屏幕截图,其中已选中“启用”。

  6. 选择“确定”

现已为默认网站启用失败的请求跟踪日志记录。 检查 %windir%\system32\inetsrv\config\applicationHost.config 文件以确认配置如下所示:

<system.applicationHost>
   <sites> 
      <!-- site & app defaults --> 
      <site name="Default Web Site" id="1"> 
         <!-- other site configuration --> 
         <traceFailedRequestsLogging  enabled="true" /> 
      </site> 
   </sites> 
</system.applicationHost>

步骤 2:配置失败定义

在此步骤中,将配置 URL 的失败定义,包括要跟踪的区域。 对于尚未启用的扩展的任何请求,IIS 将排查 IIS 返回的 404.2 问题。 这有助于确定需要启用的特定扩展。

  1. 使用管理员用户权限打开命令提示符,并导航到 %systemdrive%\windows\system32\inetsrv

  2. 运行 inetmgr 以打开 IIS 管理器。

  3. “连接 ”窗格中,展开计算机名称,展开 “站点”,然后选择“ 默认网站”。

  4. 双击“失败请求跟踪规则”

    显示“默认网站主页”窗格的屏幕截图,并选择了“失败的请求跟踪规则”。

  5. 选择“完成”。

  6. “操作 ”窗格中,选择“ 添加”。

  7. 在“添加失败的请求跟踪规则”向导中,在“指定要跟踪的内容”页上选择“所有内容(*)”。 选择下一步

    显示“添加失败的请求跟踪规则”向导的屏幕截图,其中选择了“所有内容”。

  8. “定义跟踪条件 ”页上,选中“ 状态代码” 复选框,并输入 404.2 作为要跟踪的状态代码。

    显示“定义跟踪条件”页的屏幕截图。状态代码在“状态代码”字段中选择了 404 点 2。

  9. 选择下一步

  10. “选择跟踪提供程序”页上的“提供程序”下,选中“WWW 服务器”复选框。 在“区域”,选中“安全”复选框并清除所有其他复选框。

    生成的问题会导致引发安全错误跟踪事件。 通常,可以使用 WWW 服务器 - 安全区域配置来诊断身份验证和授权(包括 ISAPI 限制列表问题)问题。 但是,由于 FREB.xsl 样式表有助于突出显示错误和警告,因此仍可以使用默认配置记录所有区域和提供程序中的所有事件。 在“详细程度”下,选择“详细”

    显示“选择跟踪提供程序”页的屏幕截图。W W 服务器在“提供程序”下处于选中状态,并在“详细”下选择“安全性”。

  11. 选择“完成”。 你将看到默认网站的以下定义:

    显示“失败的请求跟踪规则”窗格的屏幕截图。W W 服务器在关联提供程序下列出。

IIS 管理器使用 %windir%\system32\inetsrv\config\applicationHost.config 标记将配置写入 <location> 文件。 配置应如下所示:

<location path="Default Web Site"> 
    <system.webServer> 
        <tracing> 
            <traceFailedRequests> 
                <add path="*"> 
                    <traceAreas> 
                        <add provider="WWW Server" areas="Security" verbosity="Verbose" /> 
                    </traceAreas> 
                    <failureDefinitions statusCodes="404.2" /> 
                </add> 
            </traceFailedRequests> 
        </tracing> 
    </system.webServer> 
</location>

测试和查看失败请求日志文件

在此任务中,你将生成失败的请求并查看生成的跟踪日志。 你已将 IIS 配置为捕获 http://localhost/*.asp 请求(失败,且 HTTP 响应代码为 404.2)的跟踪日志。 现在,验证此操作是否有效。

步骤 1:生成错误和失败请求日志文件

  1. 打开新的 Internet Explorer 窗口。

  2. 输入以下地址: http://localhost/test.asp

  3. 出现“HTTP 错误 404.2 - 找不到”错误。

    显示应用程序默认网站中标题为“服务器错误”的网页的屏幕截图。在错误摘要下,它显示找不到 H T T P 错误 404 点 2。

步骤 2:查看失败请求日志文件

  1. 生成失败请求后,请打开具有管理员用户权限的命令提示符,并导航到 %systemdrive%\inetpub\logs\FailedReqLogFiles\W3SVC1

  2. 运行 start,从目录中启动 Internet Explorer 窗口

    显示 Internet Explorer 导航到 W 3 S V C 1 路径的屏幕截图。列出了两个文件,freb 和 f r 0 0 0 0 0 0 1。

  3. 请注意以下几点:当 IIS 写入失败请求日志文件时,它为每个失败请求写入一个文件。 还写入一个 freb.xsl 样式表,每个目录一个。 当你查看生成的失败请求日志文件(如 此示例中的fr000001.xml )时,这很有帮助。

  4. 右键单击 404.2 错误的日志文件,然后选择“使用>Internet Explorer 打开”。 如果这是你第一次打开失败的请求跟踪文件,则必须将 about:internet 添加到受信任的站点列表中,因为 Internet Explorer 的增强安全配置默认处于启用状态。 如果是这样,你将看到以下内容:

    显示 Internet Explorer 增强安全配置的对话框的屏幕截图。关于冒号 Internet 被阻止。

  5. Internet Explorer 对话框中,选择“添加...”,将 about:internet 添加到受信任的站点列表。 这使 XSL 能正常工作。 将 about:internet 添加到受信任的站点列表后,你将看到以下内容:

    显示 Internet Explorer 的屏幕截图。已选择“请求摘要”选项卡,并列出了两条警告。

    失败请求的摘要记录在顶部,“错误和警告”表标识严重性存在警告错误严重性错误的任何事件。 在此示例中, WARNING 严重性级别是由于 ISAPI 限制造成的。 您尝试加载的图像为 %windir%\system32\inetsrv\asp.dll

  6. 使用文本编辑器直接打开原始 XML 文件,查看每个事件的内容。

总结

已完成两项任务:已配置失败请求跟踪,以捕获 IIS 返回具有 404.2 状态代码的任何请求的跟踪,并验证 IIS 是否已捕获请求的跟踪。 你还验证 了freb.xml 日志文件不包含对所发出的请求的任何其他请求,因为请求没有 404.2 返回代码。 在查阅失败日志文件时,你确定失败的原因是为该请求禁用了扩展。 可以尝试其他非 HTML 页面(如.gif或.jpg文件),请注意日志文件不会添加这些跟踪。 还可以通过在 failureDefinitions 中设置 timeTaken 字段,轻松将其更改为 404,或者捕获失败(如果请求花费的时间超过 30 秒)

还原备份

完成本文中的任务后,可以还原配置的备份。 使用管理员用户权限运行以下命令:

%windir%\system32\inetsrv\appcmd restore backup cleanInstall