使用 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 (
- 万维网服务 - 运行状况和诊断 - 跟踪) 下的跟踪 (
以管理员身份登录
确保用于登录的帐户是管理员帐户或管理员组中的帐户。
注意
默认情况下,“管理员”组中不会授予你完整的管理员用户权限。 必须以管理员身份运行应用程序,可以通过右键单击应用程序图标并选择“ 以管理员身份运行”来执行此操作。
进行备份
在执行以下部分中的任务之前,必须备份配置。
若要备份配置,请执行以下步骤:
选择 “启动>所有程序>附件”。
右键单击“ 命令提示符”,然后选择“ 以管理员身份运行”。
在命令提示符下运行以下命令:
%windir%\system32\inetsrv\appcmd add backup cleanInstall
创建示例内容
导航到
%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) 管理器打开 Internet Information Services。
双击“ ISAPI 和 CGI 限制”。
选择“ 活动服务器页”。 在 “操作 ”窗格中,选择“ 拒绝 ”以禁用 ASP。
启用失败的请求跟踪
启用失败请求跟踪后,需要配置日志文件的驻留位置。 在此任务中,你将为默认网站启用失败请求跟踪,并指定日志文件的放置位置。 然后,将配置要为其生成失败日志的故障。
步骤 1:为站点启用失败请求跟踪并配置日志文件目录
使用管理员用户权限打开命令提示符,并导航到 %systemdrive%\windows\system32\inetsrv。
运行
inetmgr
以打开 IIS 管理器。在“Connections”窗格中,展开计算机名称,再展开“网站”,然后选择“默认网站”。
在 “操作 ”窗格中的 “配置”下,选择“ 失败的请求跟踪”。
在 “编辑网站失败的请求跟踪设置 ”对话框中,配置以下内容:
- 选中 “启用” 复选框。
- 保留其他设置的默认值。
选择“确定”。
现已为默认网站启用失败的请求跟踪日志记录。 检查 %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 进行故障排除。 这有助于确定需要启用的特定扩展。
使用管理员用户权限打开命令提示符,并导航到 %systemdrive%\windows\system32\inetsrv。
运行
inetmgr
以打开 IIS 管理器。在“Connections”窗格中,展开计算机名称,再展开“网站”,然后选择“默认网站”。
双击“ 失败的请求跟踪规则”。
选择“完成”。
在 “操作 ”窗格中,选择“ 添加”。
在 “添加失败的请求跟踪规则 ”向导的“ 指定要跟踪的内容 ”页上,选择“ 所有内容 (*) ”。 选择“下一步”。
在 “定义跟踪条件 ”页上,选中“ 状态代码 () ”复选框,然后输入 404.2 作为要跟踪的状态代码。
选择“下一步”。
在 “选择跟踪提供程序” 页上的 “提供程序”下,选中“ WWW 服务器 ”复选框。 在“ 区域”下,选中“ 安全性 ”复选框并清除所有其他复选框。
生成的问题会导致引发安全错误跟踪事件。 通常,身份验证和授权 (包括 ISAPI 限制列表问题) 问题,可以使用用于跟踪的 WWW 服务器 - 安全区域配置来诊断问题。 但是,由于 FREB.xsl 样式表有助于突出显示错误和警告,因此仍可以使用默认配置来记录所有区域和提供程序中的所有事件。 在“ 详细度”下,选择“ 详细”。
选择“完成”。 应会看到 默认网站的以下定义:
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:生成错误和失败请求日志文件
打开新的 Internet Explorer 窗口。
输入以下地址:
http://localhost/test.asp
。出现“HTTP 错误 404.2 - 未找到”错误。
步骤 2:查看失败请求日志文件
生成失败请求后,请打开具有管理员用户权限的命令提示符,并导航到 %systemdrive%\inetpub\logs\FailedReqLogFiles\W3SVC1。
运行 start 以从目录启动 Internet Explorer 窗口。
请注意以下事项:当 IIS 写入失败的请求日志文件时,它会为每个失败的请求写入一个文件。 还会编写 freb.xsl 样式表,每个目录一个。 查看生成的失败请求日志文件 ((如此示例) 中的 fr000001.xml )时,这会有所帮助。
右键单击 404.2 错误的日志文件,然后选择“ 使用>Internet Explorer 打开”。 如果这是你第一次打开失败请求跟踪文件,则必须将 about:internet 添加到受信任的站点列表,因为 Internet Explorer 的增强型安全配置默认已启用。 如果是这样,你将看到以下内容:
在 “Internet Explorer ”对话框中,选择“ 添加...” ,将 about:internet 添加到受信任站点列表。 这允许 XSL 正常工作。 将 about:internet 添加到受信任站点列表后,将看到以下内容:
失败请求的摘要记录在顶部,其中“错误 & 警告”表标识严重性中存在警告、错误或严重错误的任何事件。 在此示例中, 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