你目前正处于脱机状态,正在等待 Internet 重新连接

日志记录 HTTP Api 中的错误

重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。

点击这里察看该文章的英文版: 820729
概要
本文介绍了 HTTP Api 的错误日志记录功能。

基于 HTTP 的应用程序中出现的某些错误自动处理由 HTTP API 而不是被传递回应用程序以进行处理。出现此现象是因为事件日志或应用程序处理程序,否则可能冲击此类错误的频率。

下列主题描述 HTTP API 错误日志记录的不同方面。
  • 配置 HTTP API errorlogging
    注册表设置控制 HTTP API 记录错误,最大允许大小的日志文件和日志文件的位置。
  • 日志格式的 HTTP APIerror
    HTTP API 创建日志文件符合世界范围的万维网联合会 (W3C) 日志文件约定。您可以使用标准工具来分析这些日志文件。但是,与 W3C 日志文件中,不同 HTTP API 日志文件做 notcontain 的列名称。
  • 类型的 HTTP API 日志的错误
    HTTP API 记录许多常见错误。
解决方案

配置 HTTP API 错误日志记录

HTTP \Parameters项下的三个注册表值来控制 HTTP API 错误日志记录。这些注册表项位于以下注册表项︰
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
注意位置和配置值的形式可能会改变更高版本的 Windows 操作系统。

您必须具有管理员/本地系统凭据来更改注册表值,以查看或更改日志文件和包含它们的文件夹。

当 HTTP API 驱动程序启动时读取注册表值中的配置信息。因此,如果您更改的设置,必须停止和重新启动驱动程序读取新的值。为此,请键入下面的控制台命令︰
net 的停止 http
净启动 http
使用以下命名约定来命名的日志文件︰
httperr + 序列号 .log +
例如︰ httperr4.log
当他们到达的ErrorLogFileTruncateSize注册表值所指定的最大大小被循环日志文件。此值不能小于一兆字节 (MB)。

如果错误日志记录的配置无效,或任何一种故障发生时,当 HTTP API 写入日志文件时,HTTP API 使用事件日志记录通知管理员,不出现错误日志记录。

下表描述的注册表配置值。
注册表值说明
EnableErrorLoggingDword 值,可以设置为 TRUE 为启用错误日志记录或设置为 FALSE 以禁用它。默认值为 TRUE。
ErrorLogFileTruncateSizeDword 值,以字节为单位指定错误日志文件,最大大小。默认值为 1 MB (0x100000)。

注意指定的值不能小于默认值。
ErrorLoggingDir一个字符串,指定 HTTP API,使其日志文件的文件夹。

HTTP API 在指定的文件夹中,创建一个子文件夹HTTPERR ,然后将日志文件存储在子文件夹中。此子文件夹和日志文件会收到相同的权限设置。管理员和本地系统帐户具有完全访问权限。其他用户不能访问。

以下是在注册表中未指定文件夹的默认文件夹︰
%SystemRoot%\System32\LogFiles

注意ErrorLoggingDir字符串值必须是完全合格的本地路径。但是,它可以包含 %systemroot%。不能使用网络驱动器或网络共享位置。

返回页首

HTTP API 错误日志的格式

通常情况下,HTTP API 错误日志文件具有相同的格式为 W3C 错误日志,只不过 HTTP API 错误日志文件中不包含列标题。HTTP API 错误日志的每行记录一个错误。按特定的顺序显示字段。单个空格字符 (0x0020) 分隔每个字段中的前一个域。在每个字段,加号 (0x002B) 替换空格、 制表符和不可打印的控制字符。

下表标识字段和错误日志记录中的字段的顺序。
字段说明
日期日期字段应遵循 W3C 格式。此字段基于协调通用时间 (UTC)。日期字段始终是 YYYY-毫米-DD.的窗体中包含 10 个字符例如,2003 年 5 月 1 日表示为 2003年-05-01。
时间时间字段应遵循 W3C 格式。此字段基于 UTC。时间字段始终是以 MM:HH:SS 的形式为八个字符。例如,下午 5:30 (UTC) 表示为 17:30:00。
客户端 IP 地址受影响的客户端的 IP 地址。在此字段中的值可以是 IPv4 地址或 IPv6 地址。如果客户端的 IP 地址,IPv6 地址地址中也包含 ScopeId 字段。
客户端端口受影响的客户端的端口号。
服务器的 IP 地址受影响的服务器的 IP 地址。在此字段中的值可以是 IPv4 地址或 IPv6 地址。如果服务器的 IP 地址,IPv6 地址地址中也包含 ScopeId 字段。
服务器端口受影响的服务器的端口号。
协议版本正在使用的协议版本。

如果连接不分析足够的协议版本 todetermine,placeholderfor 作为使用连字符 (0x002D) 的空字段。

如果主版本号或次版本号是分析 isgreater 超过或等于 10,版本被记录为 HTTP /?。?。
谓词最后一个请求就是动词状态分析刀路。未知的谓词都包括在内,但截断为此长度超过 255 个字节的任何动作。如果谓词不是可用的一个连字符 (0x002D) 作为占位符使用空字段中。
CookedURL + 查询作为一个问号 (0x3F) 分隔的字段记录的 URL,任何与之相关联的查询。在它的 4096 字节的长度限制,此字段将被截断。

如果此 URL 进行分析 ("修正"),它使用本地代码页转换记录并作为 Unicode 域处理。

如果此 URL 不分析 ("修正") 在接收日志记录,将其复制完全正确,而不需要任何 Unicode 转换。

如果 HTTP API 无法解析此 URL,hyphen(0x002D) 作为占位符使用空字段中。
协议状态协议状态不能大于 999。

如果对 requestis 提供的响应的协议状态时,它将记录在该字段。

如果协议状态不可用,hyphen(0x002D) 作为占位符使用空字段中。
站点 Id此版本的 HTTP API 中不使用。在此字段始终显示占位符连字符 (0x002D)。
原因短语此字段包含一个字符串,标识所记录的错误类型。永远不会将此字段留空。
队列名称此请求队列名称。
下面的示例行是从 HTTP API 错误日志︰
2002-07-05 18:45:09 172.31.77.6 2094年 172.31.77.6 80 HTTP/1.1 GET /qos/1kbfile.txt 503 – ConnLimit 2002-07-05 19:51:59 127.0.0.1 2780年 127.0.0.1 80 HTTP/1.1 GET /ThisIsMyUrl.htm 400 – 主机名 2002年-07-05 19:53:00 127.0.0.1 2894年 127.0.0.1 80 HTTP/2.0 GET / 505-Version_N/S 2002-07-05 01:20:06 172.31.77.6 64388 127.0.0.1 80-----Timer_MinBytesPerSecond
返回页首

类型的 HTTP API 日志的错误

HTTP API 日志客户端、 连接超时、 孤立的请求和处理不正确的连接被中断的错误响应。

以下列表标识 HTTP API 记录的错误的类型︰
  • 对客户端的响应HTTP API 错误将响应发送到客户端,例如,400 错误引起的最后一次接收到请求中的分析错误。HTTP API 将错误响应发送后,它将关闭连接。
  • 连接超时HTTP API 会连接超时。如果某个请求被挂起表示连接超时时,请求用于提供有关连接错误日志中的详细信息。
  • 孤立的请求虽然仍有排队的请求路由到该进程,用户模式进程意外终止。HTTP API 错误日志中记录的孤立的请求。
始终显示为错误的每一行的最后一个字段的原因短语字符串由指定特定错误类型。下表列出了 HTTP API 原因短语。
原因短语说明

AppOffline服务不可用发生错误 (HTTP 错误 503)。服务不可用,因为应用程序的错误导致应用程序脱机。
AppPoolTimer服务不可用发生错误 (HTTP 错误 503)。服务不可用,因为应用程序池过程是太忙,无法处理请求。
AppShutdown服务不可用发生错误 (HTTP 错误 503)。服务不可用,因为该应用程序自动关闭响应管理员策略。
BadRequest处理请求时出现分析错误。
Client_Reset请求可以指派给某个工作进程之前,客户端和服务器之间的连接已关闭。这种现象的最常见原因是客户端过早地关闭与服务器的连接。
Connection_Abandoned_By_AppPool从应用程序池的工作进程已意外退出或关闭其句柄的孤立的挂起请求。
Connection_Abandoned_By_ReqQueue从应用程序池的工作进程已意外退出或关闭其句柄的孤立的挂起请求。特定于 Windows Vista 或更高版本的 Windows Server 2008 和更高版本。
Connection_Dropped服务器可以发送它的最终响应数据包之前,客户端和服务器之间的连接已关闭。这种现象的最常见原因是客户端过早地关闭与服务器的连接。
Connection_Dropped_List_Full删除客户端和服务器之间的连接的列表已满。特定于 Windows Vista 或更高版本的 Windows Server 2008 和更高版本。
ConnLimit服务不可用发生错误 (HTTP 错误 503)。服务不可用,因为已达到或超过了站点级别的连接限制。
Connections_Refused内核内存 NonPagedPool 下降到低于 20 MB,http.sys 已停止接收新的连接
已禁用服务不可用发生错误 (HTTP 错误 503)。服务不可用,因为管理员已脱机应用程序。
EntityTooLarge一个实体超出了允许的最大大小。
FieldLength超出了字段长度限制。
禁止访问分析时遇到了一个禁止的元素或序列。
标头在标题中出现分析错误。
主机名处理主机名时出现分析错误。
内部内部服务器发生错误 (HTTP 错误 500)。
Invalid_CR/LF发生非法回车或换行。
LengthRequired缺少一个必需的长度值。
N/A服务不可用发生错误 (HTTP 错误 503)。由于出现内部错误 (如 URL 保留列表冲突或内存分配失败等原因),该服务不可用。
N / 我出现了一个未实现错误 (HTTP 错误 501),或服务不可用错误 (HTTP 错误 503) 由于未知的传输编码。
编号处理数字时出现分析错误。
前置条件缺少所需的前提条件。
QueueFull服务不可用发生错误 (HTTP 错误 503)。服务不可用,因为应用程序请求队列已满。
RequestLength超出了请求长度限制。
Timer_AppPool该连接已过期,因为很长时间队,并对其进行处理的服务器应用程序应用程序池队列中等待的请求。此超时持续时间是ConnectionTimeout。默认情况下,此值设置为两分钟。
Timer_ConnectionIdle该连接已过期并保持空闲。默认ConnectionTimeout持续时间为两分钟。
Timer_EntityBody连接过期之前到达请求实体正文。当一个请求显然具有实体正文时,HTTP API 打开Timer_EntityBody计时器。首先,该计时器的限制设置为ConnectionTimeout值 (通常情况下,两分钟)。每次该另一数据指示收到此请求,HTTP API 重置计时器以便连接两分钟 (或在ConnectionTimeout中指定的任何内容)。
Timer_HeaderWait该连接已过期,因为分析请求的标头所用的时间长于两分钟的默认限制。
Timer_MinBytesPerSecond该连接已过期,因为客户端不接收以合理的速度响应。响应发送率已低于 240 字节/秒的默认值。这可以使用MinFileBytesPerSec配置数据库属性进行控制。
Timer_ReqQueue该连接已过期,因为太长时间在服务器应用程序来队应用程序池队列中等待的请求。此超时持续时间是ConnectionTimeout。默认情况下,此值设置为两分钟。特定于 Windows Vista 或更高版本的 Windows Server 2008 和更高版本。
Timer_Response保留。当前未使用。
Timer_SslRenegotiation该连接已过期,因为在客户端和服务器之间的 SSL 重新协商时间超过 2 分钟的默认超时。
URL处理 URL 时出现分析错误。
URL_Length一个 URL 超出最大允许大小。
谓词处理一个动词时出现分析错误。
Version_N/S版本不受支持发生错误 (HTTP 错误 505)。

返回页首
参考
有关如何添加其他日志记录字段用于 IIS HTTP 错误日志的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章︰
832975 附加属性现已为在 IIS 6.0 和 IIS 7.0 中的 Httperr #.log 文件日志记录

属性

文章 ID:820729 - 上次审阅时间:08/05/2016 06:34:00 - 修订版本: 13.0

Windows Server 2008 R2 Standard, Windows Server 2008 R2 Enterprise, Windows Server 2008 Enterprise, Windows Server 2012 R2 Standard, Windows Server 2012 R2 Datacenter, Windows Server 2012 R2 Essentials, Windows Server 2012 R2 for Embedded Systems, Windows Server 2012 R2 Foundation, Windows Server 2012 Standard, Windows Server 2012 Datacenter, Windows Server 2012 Essentials, Windows 10, Windows 10 Enterprise, released in July 2015, Windows 10 Pro, released in July 2015, Windows 10 Version 1511, Windows 8.1, Windows 8.1 Enterprise, Windows 8.1 Pro, Windows 8, Windows 8 Pro, Windows 8 Enterprise, Windows 7 Professional, Windows 7 Enterprise

  • kbhttphandlers kbhttp kbapi kberrmsg kbinfo kbmt KB820729 KbMtzh
反馈
crosoft.com/ms.js'><\/script>");