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:
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.
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 Registro | Descripción |
| EnableErrorLogging | Valor DWORD que puede establecer en TRUE para habilitar el registro de errores o en FALSE para deshabilitarlo. El valor predeterminado es TRUE. |
| ErrorLogFileTruncateSize | Valor 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. |
| ErrorLoggingDir | Valor 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
| Campo | Descripción |
| Fecha | El 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. |
| Hora | El 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 cliente | Direcció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 cliente | Número de puerto del cliente afectado. |
| Dirección IP del servidor | Direcció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 servidor | Número de puerto del servidor afectado. |
| Versión del protocolo | Versió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/?.?. |
| Verbo | Estado 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 + Consulta | La 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 protocolo | El 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 sitio | No 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 Phrase | Este 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 Phrase | Descripción
|
| AppOffline | Se 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. |
| AppPoolTimer | Se 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. |
| AppShutdown | Se 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. |
| BadRequest | Se ha producido un error de análisis al procesar la solicitud. |
| Client_Reset | Se 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_AppPool | Un proceso de trabajo del grupo de aplicaciones se ha cerrado inesperadamente o ha dejado una solicitud pendiente al cerrar el controlador. |
| Connection_Abandoned_By_ReqQueue | Un 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_Dropped | La 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_Full | La lista de conexiones interrumpidas entre los clientes y el servidor está llena. Específico de Windows Vista y Windows Server 2008. |
| ConnLimit | Se 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_Refused | La memoria NonPagedPool del núcleo ha disminuido a menos de 20 MB y http.sys ha dejado de recibir nuevas conexiones |
| Disabled | Se 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. |
| EntityTooLarge | Una entidad supera el tamaño máximo permitido. |
| FieldLength | Se ha excedido el límite de longitud del campo. |
| Forbidden | Durante el análisis se ha encontrado un elemento o secuencia prohibido. |
| Header | Se ha producido un error de análisis en un encabezado. |
| Hostname | Se ha producido un error de análisis al procesar un nombre de host. |
| Internal | Se ha producido un error de servidor interno (error 500 de HTTP). |
| Invalid_CR/LF | Se ha producido un retorno de carro o salto de línea no permitido. |
| LengthRequired | Falta un valor de longitud requerido. |
| No disponible | Se 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/I | Se 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. |
| Number | Se ha producido un error de análisis al procesar un número. |
| Precondition | Falta una precondición requerida. |
| QueueFull | Se 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. |
| RequestLength | Se ha excedido el límite de longitud de la solicitud. |
| Timer_AppPool | La 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_ConnectionIdle | La conexión ha caducado y sigue inactiva. La duración predeterminada de ConnectionTimeout es de dos minutos. |
| Timer_EntityBody | La 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_HeaderWait | La conexión ha caducado porque el análisis de encabezado de una solicitud ha superado el límite predeterminado de dos minutos. |
| Timer_MinBytesPerSecond | La 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_ReqQueue | La 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_Response | Reservado. 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.
|
| URL | Se ha producido un error de análisis al procesar una dirección URL. |
| URL_Length | Una dirección URL ha excedido el tamaño máximo permitido. |
| Verb | Se ha producido un error de análisis al procesar un verbo. |
| Version_N/S | Se ha producido un error de versión no compatible (error 505 de HTTP). |
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
(http://support.microsoft.com/kb/832975/es/
)
Ya hay propiedades adicionales disponibles para el registro en el archivo Httperr # .log en IIS 6.0 e IIS 7.0
Id. de artículo: 820729 - Última revisión: viernes, 30 de noviembre de 2012 - Versión: 6.0
| kbhttphandlers kbhttp kbapi kberrmsg kbinfo kbfixme kbmsifixme KB820729 |