适用于: Internet Information Services
Internet Information Services(IIS)中内置的出色故障排除功能之一是失败的请求跟踪。 借助此功能,可以在服务器上配置跟踪规则,从而为定义的自定义故障条件创建详细的故障排除日志文件。 例如,可以通过创建用于创建 HTTP 401 错误的日志文件的跟踪规则来捕获身份验证失败的详细信息。
IIS 中的失败请求跟踪可以配置为被动跟踪失败。 这意味着,你可以将跟踪规则添加到 IIS,这些规则将在发生错误时创建日志文件,即使你没有主动监视服务器。 例如,本文中的步骤演示如何创建跟踪规则,以便在发生 HTTP 500 错误时创建跟踪日志。 这种被动跟踪方法称为“无重现”跟踪,这意味着你可以定期检查服务器的日志,以检查是否发生了任何故障,然后仅在 IIS 创建日志时才采取措施。
使用用户访问控制
若要确保使用具有完全管理权限的帐户执行本文中的步骤,请使用以下方法之一:
- 使用本地管理员帐户登录到计算机。
- 如果使用具有管理权限的帐户而不是本地管理员帐户登录,请使用“以管理员身份运行”选项打开所有应用程序和所有命令提示符会话。
这些条件是必需的,因为 Windows 中的用户帐户控制(UAC)安全组件可防止管理访问 IIS 配置设置。 有关 UAC 的详细信息,请参阅 用户帐户控制。
安装失败的请求跟踪
默认情况下,IIS 上未安装失败的请求跟踪。 根据 Windows 版本安装失败的请求跟踪。
Windows 客户端操作系统
- 选择“开始”>“控制面板”。
- 在控制面板中,选择“程序和功能>打开或关闭 Windows 功能”。
- 展开 Internet Information Services 万维网服务>>运行状况和诊断。
- 选择“跟踪”,然后选择“确定”。
Windows Server 操作系统
- 选择“开始”,指向“管理工具”,然后选择服务器管理器。
- 在“服务器管理器层次结构”窗格中,展开“角色”,然后选择“Web 服务器”(IIS)。
- 在 “Web 服务器”(IIS) 窗格中,滚动到 “角色服务 ”部分,然后选择“ 添加角色服务”。
- 在“添加角色服务向导”的“选择角色服务”页上,选择“跟踪”,然后选择“下一步”。
- 在 “确认安装选择 ”页上,选择“ 安装”。
- 在 “结果 ”页上,选择“ 关闭”。
有关安装 IIS 失败请求跟踪的详细信息,请参阅 跟踪 <跟踪>。
如何启用失败的请求跟踪
- 选择“开始”,指向“管理工具”,然后选择“Internet Information Services”(IIS)管理器。
- 在 “连接 ”窗格中,选择要为其配置失败请求跟踪的服务器连接、站点、应用程序或目录。
- 在 “操作 ”窗格中,选择“ 失败的请求跟踪...”
- 在 “编辑网站失败请求跟踪设置 ”对话框中配置以下选项:
- 选中“启用”复选框以启用跟踪。
- 保留默认值或输入要在其中存储失败请求日志文件的新目录。
- 输入要在“最大跟踪文件数”框中存储 的失败请求跟踪文件 数。
- 选择“确定”。
备注
可以针对经典 ASP、ASP.NET 或其他特定条件自定义设置,但针对 HTTP 500 错误的通用规则对于发现 Web 服务器上的各种错误条件非常有用。
还可以使用以下语法使用 AppCmd.exe 实用工具从命令提示符启用失败的请求跟踪:
appcmd.exe set config -section:system.applicationHost/sites /[name='Default Web Site'].traceFailedRequestsLogging.enabled:"True" /commit:apphost
appcmd.exe set config -section:system.applicationHost/sites /[name='Default Web Site'].traceFailedRequestsLogging.directory:"%SystemDrive%\inetpub\logs\FailedReqLogFiles" /commit:apphost
appcmd.exe set config -section:system.applicationHost/sites /[name='Default Web Site'].traceFailedRequestsLogging.maxLogFiles:"50" /commit:apphost
排查经典 ASP 错误
在本部分中,我们将使用经典 ASP 生成一些错误,以检查失败请求跟踪如何帮助识别潜在问题。 尽管这些示例面向了解失败原因的特定情况,但你可以使用提供的技术来排查失败原因未知的情况。
排查 HTTP 500 错误
IIS 在 ASP 页无法执行时返回 HTTP 500 错误,如果没有 IIS 的失败请求跟踪功能,这些 HTTP 500 错误可能难以进行故障排除。 这是因为 ASP 错误通常在系统未主动进行故障排除时发生,因此有时唯一的选择是搜索 IIS 活动日志,并希望 ASP 模块在日志条目中返回失败请求的其他信息。 在以下使用失败请求跟踪的示例中,你有一个详细的失败记录,用于排除故障。
如何为 HTTP 500 错误添加跟踪规则
以下步骤为 HTTP 500 错误配置失败请求跟踪规则,稍后将用它来排查经典 ASP 错误消息:
- 选择“开始”,指向“管理工具”,然后选择“Internet Information Services”(IIS)管理器。
- 在 “连接 ”窗格中,转到要为其配置失败请求跟踪的连接、站点、应用程序或目录。
- 在“开始”窗格中,双击“失败请求跟踪规则”。
- 在 “操作 ”窗格中,选择“ 添加...”
- 在“添加失败请求跟踪规则”向导的“指定要跟踪的内容”页上,通常会选择要跟踪的内容类型。 在这种情况下,接受所有内容的默认值,然后选择“ 下一步”。
- 在 “定义跟踪条件 ”页上,在 “状态代码” 文本框中输入 500,以便跟踪 HTTP 500 错误,然后选择“ 下一步”。
- 在 “选择跟踪提供程序 ”页上,接受默认值,然后选择“ 完成”。
创建调用无效 COM 类的页面
在本部分中,你将检查尝试创建无效 COM 类实例的 ASP 页,这种情况通常是通过拼错有效的 COM 类生成的。 若要测试此问题,请将以下 ASP 代码保存为已启用 HTTP 500 错误的失败请求跟踪的网站 wwwroot 文件夹中Bad_class.asp:
<html>
<body>
<h1>Bad Class</h1>
<%
Set objObject = CreateObject("Bad.Class.Name")
%>
</body>
</html>
使用 Web 浏览器浏览到此文件时,IIS 应返回 HTTP 500 错误消息,IIS 将创建在 %SystemDrive%\Inetpub\FailedRequestLogFiles\W3SVCnnn 文件夹中创建的失败请求跟踪日志,其中 W3SVCnnn 包含 IIS 管理器中列出的网站的唯一标识符。 失败请求跟踪日志是 XML 文件,IIS 会创建一个 XSL 文件,该文件将 XML 转换为可以在 Internet Explorer 中打开的演示文稿格式。
在 Internet Explorer 中读取跟踪日志
在 Edge 浏览器中使用 Internet Explorer 或 IE 模式打开失败的请求跟踪日志文件时,请求摘要中会显示各种信息。 此摘要包含失败条件的常规环境信息,例如执行 URL、应用程序池、身份验证类型和用户名,以及其他信息。 你注意到失败的原因是状态代码,并且状态为 HTTP 500 错误。
在摘要的“错误和警告”部分中,可以看到视图跟踪链接,如下图所示:
选择 视图跟踪 链接时,浏览器将跳转到发生 ASP 脚本失败的跟踪部分。 如果展开单个跟踪事件,可以查看事件的特定详细信息,例如物理文件路径、行号、ASP 错误代码和说明,以及导致失败的 ASP 代码摘录,在本例中,需要尝试实例化无效的 COM 类。
下图显示了一个示例:
排查页面速度缓慢的问题
可以对失败请求跟踪进行配置,使其为超过指定的时间间隔的页面生成日志文件,而不仅仅是针对 HTTP 错误。 在实际示例中,如果你的 Web 用户抱怨网站的某些部分有时看起来很慢,但他们不知道哪些页面似乎受到影响,则可以创建一个跟踪规则,以在任何页面超过该间隔时创建日志文件。 这样,可以通过等待 IIS 创建列出页面的日志文件,将故障排除范围缩小到任何受影响的页面。 如果没有失败请求跟踪,可以查询 IIS 活动日志,查找执行时间较长的页面,但这只会将范围缩小到出现问题的页面列表,而不是问题本身。 在以下示例中,你将在慢速页面中找到失败的源。
如何为慢速内容添加跟踪规则
以下步骤为超过特定时间段的请求配置失败请求跟踪规则,稍后可以使用该规则排查 ASP 页面速度缓慢的问题。
- 选择“开始”,指向“管理工具”,然后选择“Internet Information Services”(IIS)管理器。
- 在 “连接 ”窗格中,转到要为其配置失败请求跟踪的连接、站点、应用程序或目录。
- 在“开始”窗格中,双击“失败请求跟踪规则”。
- 突出显示在上一示例中创建的规则,然后在“操作”窗格中选择“删除”。
- 在 “操作 ”窗格中,选择“ 添加...”
- 在“添加失败请求跟踪规则”向导的“指定要跟踪的内容”页上,通常会选择要跟踪的内容类型。 在这种情况下,接受所有内容的默认值,然后选择“ 下一步”。
- 在“ 定义跟踪条件 ”页上:
- 清除状态代码。
- 选择“花费的时间”(以秒为单位)。
- 输入 5 秒数。
- 选择下一步。
- 在 “选择跟踪提供程序 ”页上,接受默认值,然后选择“ 完成”。
创建一个循环无休止的页面
在此错误条件下,你将检查一个无休止地循环的页面。 当用户会话无法正确退出循环(例如代码循环遍历数据库表中的列表记录时)时,通常会导致此问题。 若要测试此问题,请将以下 ASP 代码保存为已启用失败请求跟踪的网站 wwwroot 文件夹中Slow_page.asp:
<html>
<body>
<h1>Slow Page</h1>
<%
Do
If Response.IsClientConnected = False Then
Exit Do
End If
Loop
%>
</body>
</html>
使用 Web 浏览器浏览到此文件时,Web 浏览器中不应显示任何错误,但浏览器可能永远不会返回页面并最终超时。
备注
关闭 Web 浏览器后,将写入此页面以退出循环。 如果要在达到脚本超时之前退出循环,则应在 10 秒后手动关闭浏览器。
五秒钟后,IIS 会在 SystemDrive%\Inetpub\FailedRequestLogFiles\W3SVCnnn 文件夹中创建失败的请求跟踪日志%,其中 W3SVCnnn 包含网站 IIS 管理器中列出的唯一标识符。
在 Internet Explorer 中读取跟踪日志
如前面的示例所示,在 Microsoft Edge 浏览器中使用 Internet Explorer 或 IE 模式打开失败的请求跟踪日志文件时,重要信息会显示在请求摘要中。 此摘要包含失败条件的常规环境信息,例如执行 URL、应用程序池、身份验证类型和用户名,以及其他信息。 请注意,失败的原因是所花费的时间量,时间略超过 5 秒,即在“失败的请求跟踪”规则中输入的时间。
备注
你还注意到,响应的 HTTP 状态代码是 HTTP 200,这是成功的响应。 这是通常更难诊断慢页面的因素之一-响应成功,这使得它们更容易找到。
在摘要的“错误和警告”部分中,可以看到视图跟踪链接,如下图所示:
选择视图 跟踪链接时,浏览器将转到发生 ASP 脚本失败的跟踪部分。 如果展开单个跟踪事件,可以查看事件的特定详细信息,例如物理文件路径、行号、ASP 错误代码和说明,以及创建日志文件时执行的 ASP 代码摘录。 通过使用此信息,可以检查 ASP 页,并找到在永不结束循环中执行的代码行。
下图显示了一个示例:
详细信息
有关 IIS 中失败的请求跟踪的详细信息,请参阅以下文章: