Numéro d'article: 820729
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article décrit les fonctionnalités de journalisation d'erreurs des API HTTP (Hypertext Transfer Protocol).

Certaines erreurs se produisant dans une application HTTP sont automatiquement gérées par l'API HTTP plutôt que d'être transmises à une autre application. Ce comportement a lieu car la fréquence de telles erreurs risque de saturer un journal des événements ou un gestionnaire d'application.

Les rubriques suivantes décrivent les différents aspects de la journalisation des erreurs de l'API HTTP :
  • Configurer la journalisation des erreurs de l'API HTTP
    Les paramètres de Registre contrôlent les erreurs de journaux de l'API HTTP, la taille maximale autorisée des fichiers journaux ainsi que l'emplacement des fichiers journaux.
  • Format des journaux d'erreurs de l'API HTTP
    L'API HTTP crée des fichiers journaux qui sont conformes aux conventions relatives aux fichiers journaux du World Wide Web Consortium (W3C). Vous pouvez utiliser les outils standard pour analyser ces fichiers journaux. Toutefois, contrairement aux fichiers journaux W3C, les fichiers journaux de l'API HTTP ne contiennent pas les noms de colonnes.
  • Types d'erreurs enregistrées par l'API HTTP
    L'API HTTP enregistre une série d'erreurs courantes.

Plus d'informations

Configurer la journalisation des erreurs de l'API HTTP

Pour que nous puissions configurer la journalisation des erreurs de l'API HTTP pour vous, consultez la section « Aidez-moi ». Si vous voulez configurer la journalisation des erreurs de l'API HTTP vous-même, consultez la section « Je résous le problème moi-même ».

Aidez-moi



Pour résoudre ce problème automatiquement, cliquez sur le bouton Fix it ou sur le lien associé. Dans la boîte de dialogue Téléchargement de fichier, cliquez sur Exécuter, puis suivez la procédure indiquée par l'Assistant de réparation.

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


Remarques
  • Cet Assistant peut n'exister qu'en anglais. Toutefois, la résolution automatique fonctionne aussi pour d'autres versions linguistiques de Windows.
  • Si vous n'utilisez pas l'ordinateur concerné, vous pouvez enregistrer la solution sur un lecteur flash ou sur un CD-ROM et ensuite l'exécuter sur l'ordinateur concerné par le problème.



Je résous le problème moi-même

Trois valeurs de Registre sous une clé HTTP \Parameters contrôlent la journalisation des erreurs de l'API HTTP. Ces clés se trouvent sur la clé de Registre suivante :
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
Remarque L'emplacement et le formulaire des valeurs de configuration peuvent changer dans des versions ultérieures du système d'exploitation Microsoft Windows.

Vous devez posséder les informations d'identification de l'administrateur/du système local pour modifier les valeurs de Registre et pour afficher ou modifier les fichiers journaux et le dossier qui les contient.

Les informations de configuration des valeurs de Registre sont lues lorsque le pilote de l'API HTTP démarre. Par conséquent, si vous modifiez les paramètres, vous devez arrêter, puis redémarrer le pilote afin de lire les nouvelles valeurs. Pour ce faire, tapez les commandes de console suivantes :
net stop http
net start http
La convention suivante d'affectation de noms sert à nommer les fichiers journaux :
httperr + numéro de séquence + .log
Exemple : httperr4.log
Le cycle des fichiers journaux est défini lorsqu'ils atteignent la taille maximale que la valeur de Registre ErrorLogFileTruncateSize spécifie. Cette valeur ne peut pas être inférieure à 1 mégaoctet (Mo).

Si la configuration de la journalisation des erreurs n'est pas valide ou si un type d'erreur se produit pendant que l'API HTTP est en cours d'écriture dans les fichiers journaux, l'API HTTP utilise l'enregistrement des événements pour avertir les administrateurs que la journalisation des erreurs n'a pas lieu.

Le tableau suivant décrit les valeurs de configuration de Registre.
Réduire ce tableauAgrandir ce tableau
Valeur de RegistreDescription
EnableErrorLoggingValeur DWORD que vous pouvez définir sur TRUE pour activer la journalisation des erreurs ou sur FALSE pour la désactiver. La valeur par défaut est TRUE.
ErrorLogFileTruncateSizeValeur DWORD qui spécifie la taille maximale d'un fichier journal des erreurs, en octets. La valeur par défaut est 1 Mo (0 x 100000).

Remarque La valeur spécifiée ne peut pas être inférieure à la valeur par défaut.
ErrorLoggingDirChaîne qui spécifie le dossier dans lequel l'API HTTP place ses fichiers de journalisation.

L'API HTTP crée un sous-dossier HTTPERR dans le dossier spécifié, puis enregistre les fichiers journaux dans le sous-dossier. Ce sous-dossier et les fichiers journaux reçoivent les mêmes paramètres d'autorisation. L'administrateur et les comptes système locaux possèdent un accès complet. Les autres utilisateurs n'y ont pas accès.

Voici le dossier par défaut lorsque le dossier n'est pas spécifié dans le Registre :
%SystemRoot%\System32\LogFiles

Remarque La valeur de chaîne ErrorLoggingDir doit être un chemin d'accès local complet. Toutefois, il peut contenir %SystemRoot%. Vous ne pouvez pas utiliser de lecteur réseau ou de partage réseau.

Format des journaux d'erreurs de l'API HTTP

En général, les fichiers journaux des erreurs de l'API HTTP possèdent le même format que les journaux d'erreurs W3C, si ce n'est que les fichiers journaux des erreurs de l'API HTTP ne contiennent pas d'en-têtes de colonnes. Chaque ligne d'un journal des erreurs de l'API HTTP enregistre une erreur. Les champs apparaissent dans un ordre spécifique. Un espace unique (0x0020) sépare chaque champ du champ précédent. Dans chaque champ, les signes plus (0x002B) remplacent les espaces, les tabulations et les caractères de contrôle non imprimables.

Le tableau suivant identifie les champs et l'ordre des champs dans un enregistrement de journal des erreurs.
Réduire ce tableauAgrandir ce tableau
ChampDescription
DateLe champ Date suit le format W3C. Ce champ se base sur le Temps universel coordonné (UTC). Le champ Date contient toujours dix caractères sous la forme suivante : AAAA-MM-JJ. Par exemple, la date du 1er mai 2003 est exprimée sous cette forme : 2003-05-01.
HeureLe champ Heure suit le format W3C. Ce champ se base sur le Temps universel coordonné. Le champ Heure contient toujours huit caractères sous la forme suivante : HH:MM:SS. Par exemple, 17:30 (UTC) est indiqué comme suit : 17:30:00.
Adresse IP du clientAdresse IP du client concerné. La valeur de ce champ peut être une adresse IPv4 ou une adresse IPv6. Si l'adresse IP du client est une adresse IPv6, le champ ScopeId est également inclus dans l'adresse.
Port clientNuméro de port du client concerné.
Adresse IP du serveurAdresse IP du serveur concerné. La valeur de ce champ peut être une adresse IPv4 ou une adresse IPv6. Si l'adresse IP du serveur est une adresse IPv6, le champ ScopeId est également inclus dans l'adresse.
Port du serveurNuméro de port du serveur concerné.
Version de protocoleVersion du protocole utilisé.

Si la connexion n'a pas été analysée suffisamment pour déterminer la version du protocole, un trait d'union (0x002D) est utilisé comme espace réservé pour le champ vide.

Si le numéro de version principale ou le numéro de version secondaire analysé est supérieur ou égal à 10, la version est enregistrée en tant que HTTP/?.?.
VerbeLe verbe indique que la dernière demande analysée est acceptée. Les verbes inconnus sont inclus, mais tout verbe qui fait plus de 255 octets est tronqué à cette longueur. Si un verbe n'est pas disponible, un trait d'union (0x002D) est utilisé comme espace réservé pour le champ vide.
CookedURL + requêteL'URL et toute requête y étant associée sont enregistrées en tant que champ unique et sont séparées par un point d'interrogation (0x3F). Ce champ est tronqué à sa limite de longueur de 4 096 octets.

Si cette URL a été analysée (« traitée »), elle est enregistrée avec la conversion des pages de codes locale et est traitée comme un champ Unicode.

Si cette URL n'a pas été analysée (« traitée ») au moment de l'enregistrement, elle est copiée de manière exacte, sans conversion Unicode.

Si l'API HTTP ne parvient pas à analyser cette URL, un trait d'union (0x002D) est utilisé comme espace réservé pour le champ vide.
État du protocoleL'état du protocole ne peut pas être supérieur à 999.

Si l'état du protocole de la réponse à une demande est disponible, il est enregistré dans ce champ.

Si l'état du protocole n'est pas disponible, un trait d'union (0x002D) est utilisé comme espace réservé pour le champ vide.
SiteIdÉlément non utilisé dans cette version de l'API HTTP. Un trait d'union (0x002D) utilisé en tant qu'espace réservé apparaît toujours dans ce champ.
Expression de motifCe champ contient une chaîne qui identifie le type d'erreur qui est enregistré. Ce champ n'est jamais vide.
Nom de la file d'attenteNom de la file d'attente de demandes.
Les lignes d'exemple suivantes proviennent d'un journal des erreurs de l'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

Types d'erreurs enregistrées par l'API HTTP

L'API HTTP enregistre les réponses indiquant des erreurs aux clients, les délais d'attente de connexion, les demandes orphelines et les pertes de connexion qui ne sont pas traitées correctement.

La liste suivante identifie les types d'erreurs enregistrées par l'API HTTP :
  • Réponses aux clients L'API HTTP envoie une réponse indiquant une erreur à un client, par exemple, une erreur 400 causée par une erreur d'analyse dans la dernière demande reçue. Une fois que l'API HTTP envoie la réponse indiquant une erreur, il met fin à la connexion.
  • Délais d'attente de connexion L'API HTTP fait expirer le délai d'une connexion. Si une demande est en attente lors de l'expiration du délai de connexion, la demande est utilisée afin de fournir davantage d'informations sur la connexion dans le journal des erreurs.
  • Demandes orphelines Un processus en mode utilisateur se ferme de manière inattendue alors que des demandes en attente continuent d'être transmises à ce processus. L'API HTTP enregistre les demandes orphelines dans le journal des erreurs.
Les types d'erreurs spécifiques sont désignés par les chaînes Expression de motif qui apparaissent toujours comme le dernier champ de chaque ligne d'erreur. Le tableau suivant identifie les expressions de motif de l'API HTTP.
Réduire ce tableauAgrandir ce tableau
Expression de motifDescription

AppOfflineUne erreur de type « Service non disponible » s'est produite (erreur HTTP 503). Le service n'est pas disponible car les erreurs d'application ont provoqué la déconnexion de l'application.
AppPoolTimerUne erreur de type « Service non disponible » s'est produite (erreur HTTP 503). Le service n'est pas disponible car le processus du pool d'applications est trop occupé pour traiter la demande.
AppShutdownUne erreur de type « Service non disponible » s'est produite (erreur HTTP 503). Le service n'est pas disponible car l'application s'arrête automatiquement en réponse à la stratégie de l'administrateur.
BadRequestUne erreur d'analyse s'est produite lors du traitement d'une demande.
Client_ResetLa connexion entre le client et le serveur a été fermée avant de pouvoir assigner la demande à un processus de traitement. La cause la plus courante de ce comportement est que le client ferme prématurément sa connexion au serveur.
Connection_Abandoned_By_AppPoolUn processus de traitement du pool d'applications a été fermé prématurément ou a rendu orpheline une demande en attente en fermant son handle.
Connection_Abandoned_By_ReqQueueUn processus de traitement du pool d'applications a été fermé prématurément ou a rendu orpheline une demande en attente en fermant son handle. Spécifique à Windows Vista et Windows Server 2008.
Connection_DroppedLa connexion entre le client et le serveur a été fermée avant que le serveur n'ait pu envoyer son paquet de réponse finale. La cause la plus courante de ce comportement est que le client ferme prématurément sa connexion au serveur.
Connection_Dropped_List_FullLa liste des pertes de connexion entre les clients et le serveur est pleine. Spécifique à Windows Vista et Windows Server 2008.
ConnLimitUne erreur de type « Service non disponible » s'est produite (erreur HTTP 503). Le service n'est pas disponible car la limite de connexion au niveau du site a été atteinte ou dépassée.
Connections_RefusedLa mémoire NonPagedPool du noyau est descendue en dessous de 20 Mo et http.sys a annulé la réception de nouvelles connexions
DésactivéUne erreur de type « Service non disponible » s'est produite (erreur HTTP 503). Le service n'est pas disponible car un administrateur a déconnecté l'application.
EntityTooLargeUne entité dépasse la taille maximale autorisée.
FieldLengthUne limite de longueur de champ a été dépassée.
InterditUne séquence ou un élément interdit a été rencontré lors de l'analyse.
En-têteUne erreur d'analyse s'est produite dans un en-tête.
Nom d'hôteUne erreur d'analyse s'est produite lors du traitement d'un nom d'hôte.
InterneUne erreur de serveur interne s'est produite (erreur HTTP 500).
Invalid_CR/LFUn saut de ligne ou un retour chariot non autorisé s'est produit.
LengthRequiredIl manquait une valeur de longueur requise.
N/AUne erreur de type « Service non disponible » s'est produite (erreur HTTP 503). Le service n'est pas disponible car une erreur interne (comme un échec d'allocation de mémoire) s'est produite.
N/IUne erreur non implémentée (erreur HTTP 501) ou une erreur de type « Service non disponible » s'est produite (erreur HTTP 503) à cause d'un codage de transfert inconnu.
NuméroUne erreur d'analyse s'est produite lors du traitement d'un numéro.
Condition préalableIl manquait une condition préalable requise.
QueueFullUne erreur de type « Service non disponible » s'est produite (erreur HTTP 503). Le service n'est pas disponible car la file d'attente des demandes de l'application est saturée.
RequestLengthUne limite de longueur de demande a été dépassée.
Timer_AppPoolLa connexion a expiré car une demande a attendu trop longtemps dans une file d'attente de pool d'applications pour qu'une application serveur la supprime de la file d'attente et la traite. Ce délai d'expiration est ConnectionTimeout. Par défaut, cette valeur est définie sur deux minutes.
Timer_ConnectionIdleLa connexion a expiré et reste inactive. Le délai ConnectionTimeout par défaut est de deux minutes.
Timer_EntityBodyLa connexion a expiré avant l'arrivée du corps de l'entité de demande. Lorsqu'il est clair qu'une demande possède un corps d'entité, l'API HTTP active le minuteur Timer_EntityBody. Initialement, la limite de ce minuteur est définie sur la valeur ConnectionTimeout (généralement 2 minutes). À chaque réception d'une autre indication de données sur cette demande, l'API HTTP réinitialise le minuteur pour laisser deux minutes supplémentaires à la connexion (ou applique la valeur indiquée sous ConnectionTimeout).
Timer_HeaderWaitLa connexion a expiré car l'analyse de l'en-tête d'une demande a duré plus longtemps que la limite par défaut de deux minutes.
Timer_MinBytesPerSecondLa connexion a expiré car le client ne recevait pas une réponse à une vitesse raisonnable. Le taux d'envoi de réponse a été plus lent que la valeur par défaut de 240 octets/s. Cela peut être contrôlé avec la propriété de métabase MinFileBytesPerSec.
Timer_ReqQueueLa connexion a expiré car une demande a attendu trop longtemps dans une file d'attente de pool d'applications pour qu'une application serveur la supprime de la file d'attente. Ce délai d'expiration est ConnectionTimeout. Par défaut, cette valeur est définie sur deux minutes. Spécifique à Windows Vista et Windows Server 2008.
Timer_ResponseRéservé. Non utilisé actuellement.
Timer_SslRenegotiation La connexion a expiré car la renégociation SSL entre le client et le serveur a duré plus longtemps que le délai d'attente de deux minutes.
URLUne erreur d'analyse s'est produite lors du traitement d'une URL.
URL_LengthUne URL a dépassé la taille maximale autorisée.
VerbeUne erreur d'analyse s'est produite lors du traitement d'un verbe.
Version_N/SUne erreur de type « Version non prise en charge » s'est produite (erreur HTTP 505).

Références

Pour plus d'informations sur l'ajout de champs de journalisation supplémentaires pour la journalisation des erreurs HTTP IIS, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
832975 Des propriétés supplémentaires sont maintenant disponibles pour la consignation du fichier Httperr # .log dans IIS 6.0 et IIS 7.0

Propriétés

Numéro d'article: 820729 - Dernière mise à jour: vendredi 30 novembre 2012 - Version: 7.0
Mots-clés : 
kbhttphandlers kbhttp kbapi kberrmsg kbinfo kbfixme kbmsifixme KB820729
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

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