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

适用于: Internet Information Services 8.5

简介

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

失败的请求跟踪旨在缓冲请求的跟踪事件,并且仅在请求失败时将其刷新到磁盘,在该请求中提供失败的定义。 如果想知道请求返回特定 HTTP 状态代码的原因,例如 401 或 404,或者请求需要一段时间来处理或未响应,则可以使用失败的请求跟踪。

本文中介绍的任务包括:

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

先决条件

安装 IIS

安装 IIS 8.5,然后才能执行本文中所述的任务。 浏览到 http://localhost/ 并验证是否显示了 Internet Information Services 初始屏幕。 如果未安装 IIS,请参阅 在 Windows Server 2012 R2 上安装 IIS 8.5,了解安装说明。 安装 IIS 时,请确保还安装以下功能:

  • ASP.NET 3.5(在 Web 服务器(IIS)/Web 服务器/应用程序开发功能/ASP.NET 3.5 下)
  • ASP.NET 4.5(在 Web 服务器(IIS)/Web 服务器/应用程序开发功能/ASP.NET 4.5 下)
  • 跟踪(在 Web 服务器(IIS)/Web 服务器/运行状况和诊断下 - 跟踪

以管理员身份登录

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

注意

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

进行备份

在执行以下任务之前,先备份配置文件:

  1. 同时选择 Windows 徽标键和 X 键,选择 命令提示符(管理员),然后选择“ ”。

    Windows 任务栏中命令提示符管理员的屏幕截图。

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

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

    此命令创建一个 cleanInstall 文件夹,其中包含 %windir%\system32\inetsrv\backup 中的备份配置文件。

创建示例内容

  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 管理器并选择服务器。

  2. 双击“ISAPI 和 CGI 限制”

    “I S 管理器”窗格的屏幕截图,其中选择了“I S A P I 和 C G I 限制”。

  3. 在“ISAPI 和 CGI 限制”窗格中,选择“活动服务器页面”。 在“操作”窗格中,选择“拒绝以禁用 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>
       <!-- other system configuration --> 
       <sites> 
          <site name="Default Web Site" id="1"> 
             <!-- other site configuration --> 
             <traceFailedRequestsLogging  enabled="true" /> 
          </site> 
          <!-- site & app defaults --> 
          <!-- other sites configuration --> 
       </sites> 
       <!-- other system configuration --> 
    </system.applicationHost>
    

步骤 2:配置失败定义

在此步骤中,配置 URL 的失败定义,包括要跟踪的区域。 对于尚未启用的扩展的任何请求,IIS 将排查 IIS 返回的 404.2 状态代码问题。 它有助于确定需要启用的特定扩展。 有关详细信息,请参阅 IIS 中的 HTTP 状态代码。

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

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

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

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

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

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

  6. 在“添加失败的请求跟踪规则”向导的指定内容到跟踪”页上,选择“所有内容 ” \ ,然后选择“下一步”。

    屏幕截图显示“添加失败的请求跟踪规则向导”。在“指定内容到跟踪”页上选择了“所有内容”选项。

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

    “添加失败的请求跟踪规则”的屏幕截图,其中显示了“定义跟踪条件”页,404 点 2 输入为状态代码。

  8. 选择下一步

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

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

  10. 在“详细程度”下,选择“详细”

    注意

    安装跟踪角色服务时,IIS 默认会安装 WWW 服务器、ASP 和 ISAPI 扩展跟踪提供程序。 如果安装 ASP.NET 2.0 或更高版本,IIS 会自动添加 ASPNET 跟踪提供程序。 其他提供程序由应用程序请求路由 (ARR) 安装程序包安装,该包还会安装 URL 重写模块、Web 场管理和外部缓存。 可以使用 <traceProviderDefinitions> 元素中的 <add> 元素添加更多跟踪提供程序。

    “添加失败请求跟踪规则向导”的屏幕截图,其中显示了从“提供程序”列表中选择的 WWW 服务器,并从“区域”菜单中选择“安全性”。

  11. 选择“完成”。

  12. 你会看到默认网站的以下定义

    “失败的请求跟踪规则”页的屏幕截图,其中 WWW 服务器输入为关联提供程序,404 点 2 作为状态代码。

    IIS 管理器使用 %systemdrive%\inetpub\wwwroot\web.config 标记将配置写入 <location> 文件。 配置应重述以下内容:

    <configuration> 
        <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> 
    </configuration>
    

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

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

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

  1. 打开新的 Internet Explorer 窗口。

  2. http://localhost/test.asp输入并按 Enter。 将显示“HTTP 错误 404.2 - 找不到”错误消息。

    Internet Explorer 窗口的屏幕截图,其中显示“H T T P 错误 404 磅 2”短划线“找不到消息页。

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

  1. 生成失败请求后,请打开 Windows 资源管理器并导航到 %systemdrive%\inetpub\logs\FailedReqLogFiles\W3SVC1

    失败的 Req 日志文件目录中 W 3 S V C 1 文件夹的屏幕截图。

    注意

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

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

    “Internet Explorer”对话框的屏幕截图,其中“继续”提示在选择“网站内容”选项时出现提示。

  3. Internet Explorer 对话框中,通过以下步骤将 about:internet 添加到受信任站点列表:

    1. 选择 “工具” 菜单,然后选择“ Internet 选项”。
    2. 选择“安全”选项卡。
    3. 选择 “受信任的区域”,然后选择“ 站点”。
    4. 这使 XSL 能正常工作。
  4. 将 about:internet 添加到受信任网站列表后,会看到“请求摘要”页:

    “请求摘要”页的屏幕截图,其中“错误和警告”表显示严重性、事件和模块名称的列。

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

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

总结

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

还原备份

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

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