使用 IIS 8.5 中的跟踪排查失败请求的问题
适用于: Internet Information Services 8.5
简介
基于请求的跟踪在独立 IIS 服务器和 Microsoft Azure 网站上都可用, (WAWS) 。 如果可以重现遇到的问题,则基于请求的跟踪提供了一种确定请求究竟发生了什么以及发生原因的方法。 某些请求的性能不佳、其他请求上的身份验证相关失败或来自 ASP 或 ASP.NET 的服务器 500 错误等问题通常很难进行故障排除,除非在出现问题时捕获了问题的跟踪。 本文讨论 IIS 服务器上的失败请求跟踪。 有关使用 Microsoft Azure 网站执行此操作的信息,请参阅使用 Visual Studio 排查 Azure 应用服务 中的应用问题。
失败请求跟踪旨在缓冲请求的跟踪事件,仅在请求失败时将其刷新到磁盘,你可以在其中提供 失败的定义。 如果想要了解请求返回特定 HTTP 状态代码的原因(例如 401 或 404),或者请求需要一段时间来处理或未响应,则可以使用失败请求跟踪。
本文中介绍的任务包括:
- 启用失败请求跟踪模块。
- 配置失败的请求跟踪日志文件语义。
- 定义要保留失败请求跟踪的 URL,包括失败定义和要跟踪的区域。
- 生成失败条件并查看生成的跟踪。
先决条件
安装 IIS
先安装 IIS 8.5,然后才能执行本文中所述的任务。 浏览并 http://localhost/
验证是否已显示 Internet 信息服务初始屏幕。 如果未安装 IIS,请参阅在 Windows Server 2012 R2 上安装 IIS 8.5 以获取安装说明。 安装 IIS 时,请确保还安装以下功能:
- ASP.NET 3.5 (下 Web Server (IIS) /Web Server/Application Development Features/ASP.NET 3.5)
- ASP.NET 4.5 (Web Server (IIS) /Web Server/应用程序开发功能/ASP.NET 4.5)
- 在 Web Server (IIS) /Web 服务器/运行状况和诊断下跟踪 (- 跟踪)
以管理员身份登录
确保用于登录的帐户是管理员帐户或管理员组中的帐户。
注意
默认情况下,处于管理员组中不会授予你完整的管理员用户权限。 必须以管理员身份运行应用程序,方法是右键单击应用程序图标并选择“ 以管理员身份运行”。
进行备份
在执行以下任务之前,请备份配置文件:
同时选择 Windows 徽标键和 X 键,选择命令提示符 (管理员) ,然后选择是。
在命令提示符下运行以下命令:
%windir%\system32\inetsrv\appcmd add backup cleanInstall
此命令创建一个 cleanInstall 文件夹,其中包含 %windir%\system32\inetsrv\backup 中的备份配置文件。
创建示例内容
导航到 %systemdrive%\inetpub\wwwroot。
若要还原现有内容) 或删除内容,请将内容移动到安全位置 (。
创建一个空白文件并将其命名 为test.asp。
在命令提示符下,导航到 \inetpub\wwwroot 中的 test.asp 文件。
在 test.asp 文件中,粘贴以下内容:
<h2>Failed Request Tracing Lab</h2><br> <br>Today's date is <% response.write(Date()) %>
禁用 ASP
必须为此任务禁用 ASP。 ASP 仅作为示例禁用,并出于本文中任务的目的。
若要禁用 ASP,请执行以下步骤:
打开 IIS 管理器并选择服务器。
双击“ ISAPI 和 CGI 限制”。
在 “ISAPI 和 CGI 限制 ”窗格中,选择“ 活动服务器页”。 在 “操作 ”窗格中,选择“ 拒绝 ”以禁用 ASP。 活动服务器页将显示为 “不允许”。
启用失败的请求跟踪
启用失败请求跟踪后,需要配置日志文件的路径。 在本部分中,将为默认网站启用失败请求跟踪,并指定日志文件的存储位置,然后配置要为其生成失败日志的失败。
步骤 1:为站点启用失败请求跟踪并配置日志文件目录
使用管理员用户权限打开命令提示符,并导航到 %systemdrive%\windows\system32\inetsrv。
运行
inetmgr
以打开 IIS 管理器。在“Connections”窗格中,展开计算机名称,再展开“网站”,然后选择“默认网站”。
在 “操作 ”窗格中的 “配置”下,选择“ 失败的请求跟踪...”。
在 “编辑网站失败的请求跟踪设置 ”对话框中,配置以下内容:
- 选中 “启用” 复选框。
- 保留其他设置的默认值。
选择“确定”。
现已为默认网站启用失败的请求跟踪日志记录。 检查 %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 返回的 404.2 状态代码进行故障排除。 它可帮助你确定需要启用的特定扩展。 有关详细信息,请参阅 IIS 中的 HTTP 状态代码。
使用管理员用户权限打开命令提示符,并导航到 %systemdrive%\windows\system32\inetsrv。
运行
inetmgr
以打开 IIS 管理器。在“Connections”窗格中,展开计算机名称,再展开“网站”,然后选择“默认网站”。
双击“ 失败的请求跟踪规则”。
在 “操作 ”窗格中,选择“ 添加...”。
在 “添加失败请求跟踪规则 ”向导的“ 指定要跟踪的内容 ”页上,选择“ 所有内容 (*) ”,然后选择“ 下一步”。
在 “定义跟踪条件 ”页上,选中“ 状态代码 () ”复选框,然后输入 404.2 作为要跟踪的状态代码。
选择“下一步”。
在 “选择跟踪提供程序” 页上的 “提供程序”下,选中“ WWW 服务器 ”复选框并清除所有其他复选框。 在“ 区域”下,选中“ 安全性 ”复选框并清除所有其他复选框。
生成的问题会导致引发安全错误跟踪事件。 通常,身份验证和授权 (包括 ISAPI 限制列表问题) 问题,可以使用用于跟踪的 WWW 服务器 - 安全区域配置来诊断问题。 但是,由于 FREB.xsl 样式表有助于突出显示错误和警告,因此仍可以使用默认配置来记录所有区域和提供程序中的所有事件。
在“ 详细度”下,选择“ 详细”。
注意
安装跟踪角色服务时,IIS 默认安装 WWW 服务器、ASP 和 ISAPI 扩展跟踪提供程序。 如果安装 ASP.NET 2.0 或更高版本,IIS 会自动添加 ASPNET 跟踪提供程序。 其他提供程序由应用程序请求路由 (ARR) 安装程序包安装,该包还安装 URL 重写模块、Web 场管理和外部缓存。 可以使用 元素中的
<traceProviderDefinitions>
元素添加更多跟踪提供程序<add>
。选择“完成”。
会看到 默认网站的以下定义:
IIS 管理器使用
<location>
标记将配置写入%systemdrive%\inetpub\wwwroot\web.config
文件。 配置应与以下内容重聚:<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 响应代码为 404.2 的请求的跟踪日志 http://localhost/*.asp
。 现在验证它是否正常工作。
步骤 1:生成错误和失败请求日志文件
打开新的 Internet Explorer 窗口。
输入 并
http://localhost/test.asp
按 Enter。 将显示“HTTP 错误 404.2 - 找不到”错误消息。
步骤 2:查看失败请求日志文件
生成失败请求后,请打开 Windows 资源管理器并导航到 %systemdrive%\inetpub\logs\FailedReqLogFiles\W3SVC1。
注意
当 IIS 写入失败的请求日志文件时,它会为每个失败的请求写入一个文件。 还会编写 freb.xsl 样式表,每个目录一个。 查看生成的失败请求日志文件 ((如此示例) 中的 fr000001.xml )时,这会有所帮助。
右键单击 404.2 错误的日志文件,然后选择“ 使用 ->Internet Explorer 打开”。 如果这是你第一次打开失败请求跟踪文件,则必须将 about:internet 添加到受信任的站点列表,因为 Internet Explorer 的增强型安全配置默认已启用。 如果是这样,你将看到以下内容:
在 “Internet Explorer ”对话框中,通过以下步骤将 about:internet 添加到受信任站点列表:
- 选择“ 工具 ”菜单,然后选择“ Internet 选项”。
- 单击“安全性”选项卡。
- 选择“ 受信任的区域”,然后选择“ 站点”。
- 这允许 XSL 正常工作。
将 about:internet 添加到受信任站点列表后,会看到“请求摘要”页:
顶部记录了失败请求的摘要,其中“错误 & 警告”表标识了 、 或
CRITICAL ERROR
严重性的任何事件WARNING
ERROR
。 在此示例中,WARNING
严重级别由 ISAPI 限制导致。 你尝试加载的图像是 %windir%\system32\inetsrv\asp.dll。使用文本编辑器直接打开原始 XML 文件,然后查看事件的内容。
摘要
你已完成两个任务:配置失败请求跟踪以捕获 IIS 使用 404.2 状态代码返回的任何请求的跟踪,以及验证 IIS 是否捕获了请求的跟踪。 你还验证了 freb.xml 日志文件不包含除具有 404.2 返回代码的请求以外的任何请求。 查阅失败日志文件时,确定失败的原因是已为该请求禁用了扩展。 可以尝试其他非 HTML 页面 () .gif 或 .jpg 文件,请注意日志文件不会添加这些跟踪。 还可以通过设置 failureDefinitions 中的 timeTaken 字段,轻松地将此事件更改为 404,或者在请求花费的时间超过 30 秒时捕获失败。
还原备份
完成本文中的任务后,可以还原配置的备份。 使用管理员用户权限运行以下命令:
%windir%\system32\inetsrv\appcmd restore backup cleanInstall