使用 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. (IIS) 管理器打开 Internet Information Services。

  2. 双击“ ISAPI 和 CGI 限制”。

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

  3. 选择“ 活动服务器页”。 在 “操作 ”窗格中,选择“ 拒绝 ”以禁用 ASP。

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

启用失败的请求跟踪

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

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

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

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

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

  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 针对尚未启用的扩展的任何请求返回的 404.2 进行故障排除。 这有助于确定需要启用的特定扩展。

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

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

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

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

    显示“默认网站主页”窗格和“失败请求跟踪规则”处于选中状态的屏幕截图。

  5. 选择“完成”

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

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

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

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

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

  9. 选择“下一步”。

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

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

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

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

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

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

<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 响应代码为 404.2 的请求的跟踪日志 http://localhost/*.asp 。 现在验证它是否正常工作。

步骤 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 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