Id. de artículo: 820729
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo se describen las capacidades de registro de errores de las API del Protocolo de transferencia de hipertexto (HTTP).

Algunos de los errores que se producen en las aplicaciones basadas en HTTP son controladas automáticamente por la API de HTTP en lugar de volver a pasar a la aplicación para su tratamiento. Este comportamiento se produce porque la frecuencia de dichos errores podría saturar un registro de sucesos o un controlador de aplicaciones.

En los temas siguientes se describen los distintos aspectos del registro de errores en la API HTTP:

Más información

Configurar el registro de errores en la API HTTP

Para que podamos configurar el registro de errores en la API HTTP en su lugar, vaya a la sección "Solucionarlo en mi lugar". Si prefiere configurar el registro de errores en la API HTTP de forma manual, diríjase a la sección "Solucionarlo por mí mismo".

Solucionarlo en mi lugar



Para solucionar el problema de forma automática, haga clic en el vínculo Fix it o en el botón gráfico. En el cuadro de diálogo Descarga de archivos, haga clic en Ejecutar y, a continuación, siga los pasos del Asistente Fix it.

Disable HTTP API error logging
Microsoft Fix it 50635
Enable HTTP API error logging
Microsoft Fix it 50634


Notas
  • Este asistente podría estar sólo en inglés. Sin embargo, la solución automática también funciona con las otras versiones de idioma de Windows. 
  • Si no está utilizando el equipo que tiene el problema, puede guardar la solución Fix it en una unidad flash o en un CD para posteriormente ejecutarla en el equipo con el problema.



Solucionarlo por mí mismo

Tres valores del Registro, en la clave HTTP \Parameters, controlan el registro de errores en la API HTTP. Estas claves están en la siguiente clave del Registro:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
Nota: la ubicación y el formato de los valores de configuración pueden cambiar en versiones posteriores del sistema operativo Microsoft Windows.

Debe disponer de credenciales de administrador o el sistema local para cambiar los valores del Registro, así como para ver o modificar los archivos de registro y la carpeta que los contiene.

La información de configuración en los valores del Registro se lee cuando se inicia el controlador de la API HTTP. Por lo tanto, si cambia la configuración, debe detener y reiniciar el controlador para leer los nuevos valores. Para ello, escriba los comandos de consola siguientes:
net stop http
net start http
Los nombres de los archivos de registro siguen esta convención de nomenclatura:
httperr + número de secuencia + .log
Ejemplo: httperr4.log
Los archivos de registro comienzan el ciclo cuando alcanzan el tamaño máximo especificado en el valor del Registro ErrorLogFileTruncateSize. Este valor no puede ser menor de un megabyte (MB).

Si la configuración del registro de errores no es válida, o si se produce cualquier error cuando la API HTTP está escribiendo en los archivos de registro, la API HTTP utiliza el registro de sucesos para comunicar a los administradores que el registro de errores no se está realizando.

En la tabla siguiente se describen los valores de configuración del Registro.
Contraer esta tablaAmpliar esta tabla
Valor del RegistroDescripción
EnableErrorLoggingValor DWORD que puede establecer en TRUE para habilitar el registro de errores o en FALSE para deshabilitarlo. El valor predeterminado es TRUE.
ErrorLogFileTruncateSizeValor DWORD que especifica el tamaño máximo de los archivos de registro de errores, en bytes. El valor predeterminado es un MB (0x100000).

Nota El valor especificado no puede ser menor que el valor predeterminado.
ErrorLoggingDirValor String (cadena) que especifica la carpeta en la que la API HTTP coloca los archivos de registro.

La API HTTP crea una subcarpeta HTTPERR en la carpeta especificada y almacena los archivos de registro en ella. Esta subcarpeta y los archivos de registro reciben a misma configuración de permisos. El administrador y las cuentas del sistema local reciben acceso completo. Los demás usuarios no tienen acceso.

La siguiente es la carpeta predeterminada cuando no se especifica otra en el Registro:
%raízSistema%\System32\archivosRegistro

Nota: el valor de la cadena ErrorLoggingDir debe ser una ruta de acceso local completa. Sin embargo, puede contener %SystemRoot%. No se puede utilizar una unidad de red ni un recurso compartido de red.

Formato de los registros de errores en la API HTTP

Normalmente, los archivos de registro de errores en la API HTTP tienen el mismo formato que los de W3C, con la diferencia de que los archivos de registro de errores de la API HTTP no tienen encabezados de columna. Cada línea de un registro de errores de la API HTTP registra un error. Los campos aparecen en un orden específico. Un carácter de espacio único (0x0020) separa cada campo del anterior. En cada campo, el signo más (0x002B) reemplaza a los caracteres de espacio, tabuladores y caracteres de control no imprimibles.

En la tabla siguiente se muestran los campos de un registro de archivo de errores y su orden.
Contraer esta tablaAmpliar esta tabla
CampoDescripción
FechaEl campo Fecha sigue el formato de W3C. Este campo se basa en el Horario universal coordinado (UTC). El campo Fecha tiene siempre diez caracteres, con el formato AAAA-MM-DD. Por ejemplo, el 1 de mayo de 2003 se expresa como 2003-05-01.
HoraEl campo Hora sigue el formato de W3C. Este campo se basa en el UTC. El campo Hora tiene siempre ocho caracteres, con el formato MM:HH:SS. Por ejemplo, las 5:30 p.m. (UTC) se expresa como 17:30:00.
Dirección IP del clienteDirección IP del cliente afectado. El valor de este campo puede ser una dirección IPv4 o una dirección IPv6. Si la dirección IP del cliente es IPv6, en la dirección se incluye también el campo ScopeId.
Puerto del clienteNúmero de puerto del cliente afectado.
Dirección IP del servidorDirección IP del servidor afectado. El valor de esta campo puede ser una dirección IPv4 o una dirección IPv6. Si la dirección IP del servidor es IPv6, en la dirección se incluye también el campo ScopeId.
Puerto del servidorNúmero de puerto del servidor afectado.
Versión del protocoloVersión del protocolo que se utiliza.

Si la conexión no se ha analizado lo suficiente como para determinar la versión del protocolo, se utiliza un guión (0x002D) como marcador de posición del campo vacío.

Si el número de la versión principal o el de la versión secundaria analizadas es igual o mayor a 10, la versión se registra como HTTP/?.?.
VerboEstado del verbo que pasa la última solicitud analizada. Se incluyen los verbos desconocidos, pero si el tamaño de un verbo es de más de 255 bytes, se trunca en esta longitud. Si no hay ningún verbo disponible, se utiliza un guión (0x002D) como marcador de posición del campo vacío.
CookedURL + ConsultaLa dirección URL y cualquier consulta asociada se registran como un campo separado por un signo de interrogación (0x3F). Este campo se trunca en su longitud límite, 4096 bytes.

Si esta dirección URL se ha analizado (es decir, es una versión canónica de caracteres anchos, "cooked"), se registra con conversión de la página de código local y se trata como campo Unicode.

Si esta dirección URL no se ha analizado ("cooked") en el momento del registro, se copia tal como es, sin conversión Unicode.

Si la API HTTP no puede analizar esta dirección URL, se utiliza un guión (0x002D) como marcador de posición del campo vacío.
Estado del protocoloEl estado del protocolo no puede ser mayor de 999.

Si el estado del protocolo de la respuesta a una solicitud está disponible, se registra en este campo.

Si el estado del protocolo no está disponible, se utiliza un guión (0x002D) como marcador de posición del campo vacío.
Id. del sitioNo se utiliza en esta versión de la API HTTP. En este campo aparece siempre un guión (0x002D) como marcador de posición.
Reason PhraseEste campo contiene una cadena que identifica el tipo de error que se está registrando. Este campo no se deja vacío nunca.
Nombre de colaÉste es el nombre de la cola de solicitudes.
Las siguientes líneas de ejemplo proceden de un registro de errores de la API HTTP:
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 ? Hostname 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 20:06:01 172.31.77.6 64388 127.0.0.1 80 - - - - - Timer_MinBytesPerSecond

Tipos de errores que registra la API HTTP

La API HTTP registra las repuestas de error a clientes, los tiempos de espera de conexión, las solicitudes huérfanas y las conexiones interrumpidas que no se tratan correctamente.

En la lista siguiente se enumeran los tipos de error que registra la API HTTP:
  • Respuestas a clientes La API HTTP envía una respuesta de error a un cliente, por ejemplo, un error 400 debido a un error de análisis en la última solicitud recibida. Una vez que la API HTTP envía la respuesta de error, finaliza la conexión.
  • Tiempos de espera de conexiónLa API HTTP finaliza la conexión tras el tiempo de espera. Si hay una solicitud pendiente cuando se excede el tiempo de espera de la conexión, la solicitud se utiliza para proporcionar más información sobre la conexión en el registro de errores.
  • Solicitudes huérfanas Un proceso en modo de usuario se detiene inesperadamente cuando todavía hay solicitudes en cola dirigidas a dicho proceso. La API HTTP registra las solicitudes huérfanas en el registro de errores.
Los errores concretos se describen mediante cadenas Reason Phrase que aparecen siempre como el último campo de cada línea de error. En la lista siguiente se enumeran las cadenas Reason Phrase de la API HTTP:
Contraer esta tablaAmpliar esta tabla
Reason PhraseDescripción

AppOfflineSe ha producido un error de servicio no disponible (error 503 de HTTP). El servicio no está disponible porque los errores de la aplicación han hecho que la aplicación quede sin conexión.
AppPoolTimerSe ha producido un error de servicio no disponible (error 503 de HTTP). El servicio no está disponible porque el proceso del grupo de aplicaciones está ocupado y no puede atender la solicitud.
AppShutdownSe ha producido un error de servicio no disponible (error 503 de HTTP). El servicio no está disponible porque la aplicación se ha cerrado automáticamente en respuesta a la directiva del administrador.
BadRequestSe ha producido un error de análisis al procesar la solicitud.
Client_ResetSe ha cerrado la conexión entre el cliente y el servidor antes de que la solicitud se pudiera asignar a un proceso de trabajo. La causa más común de este comportamiento es que el cliente cierra prematuramente la conexión al servidor.
Connection_Abandoned_By_AppPoolUn proceso de trabajo del grupo de aplicaciones se ha cerrado inesperadamente o ha dejado una solicitud pendiente al cerrar el controlador.
Connection_Abandoned_By_ReqQueueUn proceso de trabajo del grupo de aplicaciones se ha cerrado inesperadamente o ha dejado una solicitud pendiente al cerrar el controlador. Específico de Windows Vista y Windows Server 2008.
Connection_DroppedLa conexión entre el cliente y el servidor se cerró antes de que el servidor pudiera enviar su último paquete de respuesta. La causa más común de este comportamiento es que el cliente cierra prematuramente la conexión al servidor.
Connection_Dropped_List_FullLa lista de conexiones interrumpidas entre los clientes y el servidor está llena. Específico de Windows Vista y Windows Server 2008.
ConnLimitSe ha producido un error de servicio no disponible (error 503 de HTTP). El servicio no está disponible porque se ha alcanzado o excedido el límite de conexión de nivel de sitio.
Connections_RefusedLa memoria NonPagedPool del núcleo ha disminuido a menos de 20 MB y http.sys ha dejado de recibir nuevas conexiones
DisabledSe ha producido un error de servicio no disponible (error 503 de HTTP). El servicio no está disponible porque un administrador ha dejado la aplicación sin conexión.
EntityTooLargeUna entidad supera el tamaño máximo permitido.
FieldLengthSe ha excedido el límite de longitud del campo.
ForbiddenDurante el análisis se ha encontrado un elemento o secuencia prohibido.
HeaderSe ha producido un error de análisis en un encabezado.
HostnameSe ha producido un error de análisis al procesar un nombre de host.
InternalSe ha producido un error de servidor interno (error 500 de HTTP).
Invalid_CR/LFSe ha producido un retorno de carro o salto de línea no permitido.
LengthRequiredFalta un valor de longitud requerido.
No disponibleSe ha producido un error de servicio no disponible (error 503 de HTTP). El servicio no está disponible porque se ha producido un error interno (como por ejemplo un error de asignación de memoria).
N/ISe ha producido un error de no implementación (error 501 de HTTP), o un error de servicio no disponible (error 503 de HTTP) a causa de una codificación de transferencia desconocida.
NumberSe ha producido un error de análisis al procesar un número.
PreconditionFalta una precondición requerida.
QueueFullSe ha producido un error de servicio no disponible (error 503 de HTTP). El servicio no está disponible porque la cola de solicitudes de la aplicación está llena.
RequestLengthSe ha excedido el límite de longitud de la solicitud.
Timer_AppPoolLa conexión ha caducado porque una solicitud esperó demasiado tiempo en una cola del grupo de aplicaciones a que una aplicación de servidor la sacara de la cola y la procesara. La duración del tiempo de espera es ConnectionTimeout. De manera predeterminada, este valor se establece dos minutos.
Timer_ConnectionIdleLa conexión ha caducado y sigue inactiva. La duración predeterminada de ConnectionTimeout es de dos minutos.
Timer_EntityBodyLa conexión ha caducado antes de que llegara el cuerpo de la entidad de la solicitud. Cuando está claro que una solicitud tiene un cuerpo de entidad, la API HTTP activa el contador Timer_EntityBody. Inicialmente, el límite de este contador se establece en el valor de ConnectionTimeout (normalmente 2 minutos). Cada vez que se recibe otra indicación de datos en esta solicitud, la API HTTP vuelve a establecer el contador para dar a la conexión dos minutos más (o el tiempo especificado en ConnectionTimeout).
Timer_HeaderWaitLa conexión ha caducado porque el análisis de encabezado de una solicitud ha superado el límite predeterminado de dos minutos.
Timer_MinBytesPerSecondLa conexión ha caducado porque el cliente no recibía la respuesta a una velocidad razonable. La velocidad de respuesta era inferior al valor predeterminado de 240 bytes por segundo. Esto puede controlarse con la propiedad MinFileBytesPerSec de la metabase.
Timer_ReqQueueLa conexión ha caducado porque una solicitud esperó demasiado tiempo en una cola del grupo de aplicaciones a que una aplicación de servidor la sacara de la cola. La duración del tiempo de espera es ConnectionTimeout. De manera predeterminada, este valor se establece dos minutos. Específico de Windows Vista y Windows Server 2008.
Timer_ResponseReservado. No se utiliza actualmente.
Timer_SslRenegotiation La conexión ha caducado porque la renegociación de SSL entre el cliente y el servidor ha superado el tiempo de espera predeterminado de dos minutos.
URLSe ha producido un error de análisis al procesar una dirección URL.
URL_LengthUna dirección URL ha excedido el tamaño máximo permitido.
VerbSe ha producido un error de análisis al procesar un verbo.
Version_N/SSe ha producido un error de versión no compatible (error 505 de HTTP).

Referencias

Para obtener más información acerca de cómo agregar campos de registro adicionales para el registro de errores de HTTP en IIS, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
832975 Ya hay propiedades adicionales disponibles para el registro en el archivo Httperr # .log en IIS 6.0 e IIS 7.0

Propiedades

Id. de artículo: 820729 - Última revisión: viernes, 30 de noviembre de 2012 - Versión: 6.0
Palabras clave: 
kbhttphandlers kbhttp kbapi kberrmsg kbinfo kbfixme kbmsifixme KB820729

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com