DetailPage-MSS-KB

Base de connaissances

Numéro d'article: 891032 - Dernière mise à jour: jeudi 31 octobre 2013 - Version: 5.0

 
Colonne vocale d'assistance ASP .NET : Dépannage ASP.NET
Pour personnaliser cette colonne à vos besoins, nous souhaitons vous inviter à soumettre vos idées sur les sujets qui vous intéressent et problèmes que vous souhaitez voir traités dans de futurs articles de la Base de connaissances et des colonnes Support Voice. Vous pouvez soumettre vos idées et vos commentaires à l'aide de la Demandez-le (http://support.microsoft.com/common/survey.aspx?scid=sw;en;1176&p0=&p1=&p2=&p3=&p4=) . Il existe également un lien vers le formulaire au bas de cette colonne.

Sommaire

INTRODUCTION

Nouveau Bonjour et Bienvenue dans l'édition de novembre ' 04 de la colonne vocale d'assistance. J'aimerais remercier Jim malicieusement , un ingénieur du support ici chez Microsoft ASP .NET, de prise en charge pour sa contribution. Jim a des idées pour la colonne d'assistance vocale et voulu afin de les partager. Recherchez les contributions de Jim dans les prochains mois et comme toujours, nous envoyer vos suggestions pour les chroniques à venir. Jim Merci !

Jim travaille avec Microsoft depuis six ans sur les équipes de FrontPage, VB et ASP .NET. Pendant ce temps, il a écrit pour le Centre pour développeurs Office sur MSDN, et il est l'auteur d'un livre sur FrontPage, spécial Edition à l'aide de Microsoft Office FrontPage 2003. Jim dispose également d'un site Web où il fournit des compléments libres pour FrontPage permettre aux développeurs Web de tirer le meilleur parti des produits Microsoft. Voici cette adresse de site Web :
http://www.jimcosoftware.com (http://www.jimcosoftware.com)
Veuillez extraire d'une chaise, lancer les chaussures, lisez notre article tout sur le dépannage de ASP.NET et n'oubliez pas que vous pouvez soumettre vos idées à nous en utilisant le lien « Poser pour IT » inclus dans chaque colonne que nous publions.

Jeremy

Avez-vous vu le film Shrek ? L'étoile de la séquence, Shrek, est un ogre, une créature insupportable vert avec les habitudes d'hygiène énorme. Très tôt dans la séquence, Shrek proclaims la complexité des ogres en disant que "ogres sont comme les oignons. Ils ont couches. »

ASP.NET est similaire à un ogre. Il a de nombreuses couches--le client Web, n'importe quel périphérique intermédiaire tels que des serveurs proxy, le serveur Web et le réseau, qu'il se trouve sur et touche de l'application de toutes les autres ressources. Toutes ces couches compliquent ASP.NET résoudre les problèmes, sauf si vous savez quel outil utiliser et comment les utiliser correctement cet outil.

Au risque de rendre moi-même obsolètes, cette série vous apprendra comment utiliser certains des outils que nous utilisons du support technique pour résoudre les problèmes. Je vais aller sur l'utilisation de certains outils réellement intéressants tels que :
  • Moniteur réseau
  • Fiddler
  • FileMon / Regmon
  • Outils de débogage pour Windows (Windbg)
  • SOS (extension Windbg pour déboguer le code managé)
  • DBGClr
Je n'entrerai pas dans ses moindres détails de l'utilisation de ces outils, mais je vous fournira une base solide sur l'utilisation de ces outils de sorte que vous pouvez approfondir l'origine de nombreux problèmes que vous pouvez rencontrer.

Renifleurs

La première partie de cette série traitera de renifleurs de réseau. Lançons-nous directement dans.

Problème de l'exemple :

Vous disposez d'une application ASP.NET qui utilise l'authentification intégrée de Windows et a « anonyme » désactivé. Un de vos utilisateurs est signalé qu'ils ne sont pas en mesure d'accéder au site. Au lieu de cela, ils sont invités à plusieurs reprises pour un nom d'utilisateur et un mot de passe. Vous pensez que les autorisations sont correctes pour cet utilisateur.

Ce type de problème est le candidat idéal pour le dépannage à l'aide d'un renifleur de réseau. Un espion vous permettra de déterminer si Oui ou non le client envoie des informations d'authentification au serveur. L'Analyseur de réseau que nous utilisons chez Microsoft est le Moniteur réseau.

Moniteur réseau

Vous pouvez télécharger une version limitée de temps du Moniteur réseau à partir du site FTP de Microsoft suivant :
FTP://FTP.Microsoft.com/PSS/Tools/Netmon/Netmon2.zip (ftp://ftp.microsoft.com/PSS/Tools/Netmon/Netmon2.zip)
Le mot de passe sur ce fichier Zip trace. Après avoir installé le Moniteur réseau, vous la trouverez en cliquant sur Outils d'administration, puis sur Outils d'analyse réseau.
L'interface réseau pour capturer la sélection
Lorsque vous démarrez le Moniteur réseau pour la première fois, la première chose à faire est de sélectionner la carte réseau que vous souhaitez utiliser dans la boîte de dialogue illustrée dans la Figure 1.
Réduire cette imageAgrandir cette image
Figure 1: Choix d'un réseau dans le Moniteur réseau

Figure 1: Choix d'un réseau dans le Moniteur réseau

Notez que dans la Figure 1, l'interface sélectionnée est une connexion d'accès à distance ou une carte VPN comme indiqué dans les propriétés de l'interface. Dans la plupart des cas, vous devez sélectionner l'une des interfaces autres que l'accès à distance ou une connexion VPN. J'ai choisi d'utiliser une capture d'écran de la carte VPN que vous ne voulez pas choisir parce que je voulais vous permettent de voir clairement la manière dont il serait identifié. Une fois de plus, dans presque tous les cas, la carte que vous souhaitez choisir est celle qui ne ressemble pas à l'un illustré sur la Figure 1.

Si vous devez modifier la carte réseau que vous capturez, vous pouvez accéder en cliquant sur l'option de réseaux dans le menu Capture la boîte de dialogue.
Définition de la taille de mémoire tampon
Le Moniteur réseau a un mémoire tampon de capture par défaut de 1 Mo. Cela signifie qu'une fois qu'il recueille 1 Mo de données réseau, il commence à remplacer la trace. Dans de nombreux cas, vous souhaiterez augmenter cette mémoire tampon. Pour cela, cliquez sur Capture , puis cliquez sur Paramètres de la mémoire tampon. Ceci affichera la boîte de dialogue Paramètres de mémoire tampon de Capture où vous pouvez augmenter la taille de la mémoire tampon. La taille que vous souhaitez spécifier dépend de la quantité de trafic réseau que vous voyez sur votre réseau. Pour un problème dans lequel vous souhaitez générer les images qui que vous intéressent immédiatement au démarrage de la capture, une mémoire tampon de 2 ou 3 Mo doit être plus que suffisante.

Vous remarquerez que dans la boîte de dialogue Paramètres de mémoire tampon de Capture , vous pouvez également modifier la taille du cadre. Ceci est utile dans les cas où vous souhaitez capturer uniquement les en-têtes qui sont envoyés. En diminuant la taille des trames, vous pouvez enregistrer l'espace dans la mémoire tampon et encore capturer les en-têtes que vous avez besoin. Je n'entrerai dans les détails sur l'utilisation qui dans cet article.
Démarrage de la capture
Maintenant que vous avez votre jeu de mémoire tampon, vous êtes prêt à démarrer la capture des données. Vous pouvez démarrer la capture de plusieurs manières :
  • Sur le clavier, appuyez sur F10.
  • Cliquez sur Capture, puis cliquez sur Démarrer dans le menu.
  • Cliquez sur le bouton Démarrer la Capture dans la barre d'outils (ce buttonlooks comme un bouton de lecture).
Pour capturer les paquets avec le Moniteur réseau, vous verrez les règles de déplacement et les statistiques de la modification, comme illustré à la Figure 2. Si vous ne voyez pas ce qui se passe lorsque vous capturez, susceptibles de vous doivent changer la carte réseau que vous capturez.
Réduire cette imageAgrandir cette image
Figure 2: Le Moniteur réseau capture des paquets

Figure 2: Le Moniteur réseau capture des paquets

Une fois que vous avez commencé la capture dans le Moniteur réseau, reproduisez le problème que vous devez capturer et puis arrêter la capture en cliquant sur le bouton Arrêter dans le Moniteur réseau, cliquez sur captureret puis en cliquant sur Arrêter, ou en appuyant sur F11 sur votre clavier. Vous êtes maintenant prêt à examiner les données qui ont été capturées.

Remarque : Le Moniteur réseau capture uniquement les données qui est transmis sur le réseau. Par conséquent, vous généralement ne peut pas capturer une requête par rapport à votre application Web en accédant à la console. Dans certains cas, la navigation à l'aide de votre adresse IP ou le nom de domaine complet vous permettra de capturer sur l'ordinateur local.
Examen des données capturées
Une fois que vous avez arrêté la capture, vous pouvez afficher les données capturées en cliquant sur capturer, puis en cliquant sur Afficher les données capturées, ou en appuyant sur F12 de votre clavier. Par défaut, vous voyez toutes les données qui s'est passé sur le câble pendant que vous ont été capture comme illustré à la Figure 3.
Réduire cette imageAgrandir cette image
Figure 3: Les données capturées dans le Moniteur réseau

Figure 3: Les données capturées dans le Moniteur réseau

Dans ce cas, il serait intéressant de pouvoir simplement les paquets mode HTTP. Qui est facilement réalisable en filtrant les données capturées pour afficher uniquement le protocole HTTP. Pour filtrer les données capturées, cliquez sur capturer, puis cliquez sur filtre, ou appuyez sur la touche F8 de votre clavier ou cliquez sur le bouton de barre d'outils qui ressemble à un entonnoir.

Dans la boîte de dialogue Filtre d'affichage , double-cliquez sur le protocole == n'importe lequel filtre pour afficher la boîte de dialogue Expression , comme illustré à la Figure 4.
Réduire cette imageAgrandir cette image
Figure 4: La boîte de dialogue Expression fournit des fonctions puissantes de filtrage

Figure 4: La boîte de dialogue Expression fournit des fonctions puissantes de filtrage

Par défaut, le Moniteur réseau affiche tous les protocoles. Pour afficher uniquement le protocole HTTP, cliquez sur Désactiver tout, double-cliquez sur le protocole HTTP pour le sélectionner, puis cliquez sur OK. Le Moniteur réseau affiche uniquement le protocole HTTP.

Remarque : Vous pouvez filtrer le Moniteur réseau avant de capturer afin qu'il ne capture que les trames qui correspondent au filtre que vous définissez. Dans la plupart des cas, je préfère filtrer après la capture.

Après avoir filtré les paquets capturés afin que seul le protocole HTTP est affiché, le Moniteur réseau affiche chaque trame de données HTTP capturées. En double-cliquant sur une image, vous pouvez consulter des informations détaillées sur ce paquet. Dans le scénario que nous manipulons, nous essayons de déterminer si le client a envoyé des informations d'authentification au serveur Web. La capture de la Figure 5 montre la réponse de la requête GET pour la page ASP.NET. Notez que le serveur Web a répondu avec un code de 401 état indiquant que l'accès a été refusé à la page Web.
Réduire cette imageAgrandir cette image
Figure 5: Le Moniteur réseau affiche une réponse « Accès refusé » lors de l'authentification est requise

Figure 5: Le Moniteur réseau affiche une réponse « Accès refusé » lors de l'authentification est requise

En examinant les en-têtes WWW-Authenticate, vous pouvez voir dans la Figure 5 que le serveur Web accepte à la fois l'authentification NTLM et Kerberos (Negotiate). Par conséquent, nous pensons que le client envoie les informations d'authentification automatiquement après le message « Accès refusé » nous voyons ici.
Numéros de séquence
Pour trouver la réponse du client pour le paquet illustré à la Figure 5, nous devons examiner les numéros de séquence dans cette réponse. Le concept de numéros de séquence est souvent mal compris dans une révision des traces du Moniteur réseau. Ils sont la clé pour comprendre l'ordre dans lequel choses s'est produite.

Dans le volet du milieu de la Figure 5, vous remarquerez que le protocole HTTP a été développé pour afficher tous les en-têtes HTTP. Juste au-dessus du protocole HTTP, le protocole est le protocole TCP, et vous pouvez voir les numéros de séquence et le numéro d'accusé de réception dans le cadre des segments TCP. Les numéros de séquence (représentés par seq dans le paquet TCP) fournissent un moyen d'identifier le segment TCP spécifique. Chaque séquence TCP doit être accompagnée d'un accusé de réception ou un accusé de réception de la séquence.

Voici un extrait de la trace d'une demande HTTP GET :
11 4294967263.4294633595 LOCAL 00045A420DBC HTTP GET Request 
(from client using port 3134) DADATOP 192.168.0.4 IP 
TCP: .AP..., len: 402, seq:3410290480-3410290882, ack:1947093623, win:17520, src: 3134 dst:  80 
Notez que le numéro de séquence de fin est 3410290882. Par conséquent, pour trouver la réponse du serveur, vous devez rechercher la trame reconnaît cette séquence. En d'autres termes, vous cherchez une réponse à un accusé de réception de 3410290882. Voici cette image :
12 4294967263.4294636605 00045A420DBC LOCAL HTTP Response (to client using port 3134) 192.168.0.4 DADATOP IP 
TCP: .A...., len: 1460, seq:1947093623-1947095083, ack:3410290882, win:65133, src:  80 dst: 3134
Ces numéros sont importants parce que parfois, lorsque la réponse apparaîtra avant la demande dans une trace du Moniteur réseau. La seule façon d'être certain que l'ordre des paquets consiste à vérifier les segments à l'aide de ces numéros.

Étant donné que nous recherchons sur cette trace pour voir si le client envoie des informations d'authentification, nous pouvons utiliser les segments TCP pour suivre les requêtes HTTP GET et la réponse du serveur. Voici un extrait de la trame qui envoie des informations d'authentification du client :
23 4294967263.4294641621 LOCAL 00045A420DBC HTTP GET Request (from client using port 3135) 192.168.0.2 192.168.0.4 IP 
HTTP: GET Request (from client using port 3135)
  HTTP: Request Method = GET
  HTTP: Uniform Resource Identifier = /webapplication1/webform1.aspx
  HTTP: Protocol Version = HTTP/1.1
  HTTP: Accept = image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.
  HTTP: Accept-Language = en-us
  HTTP: Accept-Encoding = gzip, deflate
  HTTP: User-Agent = Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 
  HTTP: Host = alien
  HTTP: Connection = Keep-Alive
  HTTP: Authorization = Negotiate TlRMTVNTUAABAAAAB4IIogAAAAAAAAAAAAAAAAAAAAAFASgKAAAA
44 77 3D 3D 0D 0A 0D 0A         AAADw==....   
Qu'il indique nous ? Nous pouvons voir que l'en-tête d'autorisation a la valeur « Negotiate » et que nous pouvons voir une longue chaîne de caractères envoyés dans cet en-tête. Cette réponse indique que le client et le serveur négocient une connexion NTLM. Nous savons que l'authentification NTLM est utilisée ici, car le premier caractère est un ' « t ». S'il s'agissait d'un « Y », il serait Kerberos. L'en-tête est défini à "Negotiate" au lieu de "NTLM". Cela ne signifie pas qu'il utilise Kerberos ou NTLM, mais qu'elle sera « Négocier » de la méthode d'autorisation et essayez d'abord Kerberos s'il est possible. Si elle ne peut pas utiliser Kerberos, il utilise NTLM.

La figure 6 est une capture d'écran de l'image ci-dessus afin que vous puissiez voir où les informations d'authentification sont envoyées. Notez que les en-têtes HTTP dans le cadre du milieu ont été développés afin que nous pouvons voir les détails de chaque en-tête.
Réduire cette imageAgrandir cette image
Figure 6: Le cadre contenant les informations d'authentification

Figure 6: Le cadre contenant les informations d'authentification

Cette image indique que le client est la plupart des informations d'authentification sans aucun doute envoi ; Si l'utilisateur obtient accès refusé à ce stade, il est soit car n'est pas le cas de l'utilisateur est autorisé à la ressource ou c'est parce que les informations d'authentification sont en cours de modification à un moment donné sur le câble.
Une autre façon de filtrer
Dans de nombreux cas, vous pouvez dépanner un serveur ayant un trafic important. Dans ces cas, vous pouvez voir un grand nombre d'images HTTP et il peut être difficile de trouver ceux de droite. À l'aide de plusieurs expressions de filtrage, vous pouvez facilement obtenir vers la droite pour les cadres corrects.

Cliquez sur le bouton filtre , ou appuyez sur la touche F8 de votre clavier pour faire apparaître la boîte de dialogue Filtre d'affichage . Sur le côté droit, cliquez sur Expression pour ajouter une nouvelle expression. Il existe deux différents filtres que vous souhaitez utiliser dans ce scénario : filtrer par adresse IP et de filtrer par code d'état HTTP.

Pour filtrer par adresse IP, cliquez sur l'onglet de propriété et faites défiler la liste vers le bas dans le volet gauche jusqu'à ce que vous voyiez IP. Développez IPet faites défiler jusqu'à ce que vous voyiez Adresse Source. Sélectionnez == pour la relation, puis entrez l'adresse IP de l'ordinateur client, comme illustré à la Figure 7. Une fois cela fait, vous ne verrez que les trames en provenance de l'adresse IP que vous avez entré.
Réduire cette imageAgrandir cette image
Figure 7: Filtrage par adresse IP

Figure 7: Filtrage par adresse IP

Il est important de noter que plusieurs fois l'adresseIP ne peut pas être la propriété meilleure sur lequel filtrer une trace. Souvent les utilisateurs seront disponible un serveur Web via un routeur ou un pare-feu. Dans ces cas, l'adresse IP sera souvent l'adresse IP du routeur ou pare-feu et non sur le client.

Vous pouvez également filtrer par code d'état HTTP. Si vous souhaitez localiser rapidement le cadre dans lequel un 401 est envoyé au client, vous pouvez filtrer sur le code d'état HTTP 401. Pour ce faire, sélectionnez HTTP dans la liste Protocole : propriété et développez-le. Faites défiler la liste vers le bas, puis cliquez sur Code d'état. Sélectionnez == pour la relation, cliquez sur le bouton radio décimal (important), entrez 401 la valeur de champ, comme illustré à la Figure 8, puis cliquez sur OK. Le Moniteur réseau affiche uniquement les trames où un code de 401 état a été envoyé, comme illustré à la Figure 8.
Réduire cette imageAgrandir cette image
Figure 8: Filtrage par code d'état HTTP

Figure 8: Filtrage par code d'état HTTP
Une fois que vous avez trouvé le cadre dans lequel le 401 a été envoyé, vous pouvez appuyez sur F7 de votre clavier pour désactiver le filtre. Le cadre dans lequel a été envoyé le 401 est toujours mise en surbrillance et vous pouvez examiner les images environnantes pour la réponse du client à la 401.

Fiddler – HTTP Proxy de débogage

Si vous explorez à partir d'Internet Explorer sur l'ordinateur client qui pose problème, vous pouvez utiliser Fiddler (illustrée dans la Figure 9) plutôt que le Moniteur réseau pour capturer les informations HTTP envoyées par le client. Fiddler capture uniquement les paquets HTTP et s'intègre directement dans Internet Explorer.
Réduire cette imageAgrandir cette image
Figure 9: Fiddler

Figure 9: Fiddler

Dans la Figure 9, vous pouvez voir la réponse 401 à partir du serveur, et vous pouvez voir le client répond avec un en-tête Negotiate (en surbrillance). Dans ce cas, une erreur d'exécution se produit après que le client envoie l'authentification (qui n'est pas liée à ce problème), mais nous pouvons voir clairement que le client a sa part en envoyant le ticket Kerberos.

Vous pouvez télécharger Fiddler à partir du site Web suivant :
http://www.fiddlertool.com. (http://www.fiddlertool.com)

Quel est l'avenir ?

Utilisez le Moniteur réseau ou Fiddler, vous pouvez souvent éliminer le client comme étant un problème dans les échecs d'authentification. Le mois prochain, nous allons passer via l'utilisation de Filemon et Regmon de SysInternals. Ces outils sont particulièrement utiles dans le dépannage des problèmes d'autorisation sur le système de fichiers et du Registre.
Comme toujours, n'hésitez à soumettre des idées sur des sujets que vous souhaitez traités dans de futurs des colonnes ou dans la Base de connaissances à l'aide de la Demandez-le (http://support.microsoft.com/common/survey.aspx?scid=sw;en;1176&p0=&p1=&p2=&p3=&p4=) .

Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 1.1
Mots-clés : 
kbhowto kbasp kbmt KB891032 KbMtfr
Traduction automatiqueTraduction automatique
IMPORTANT : Cet article est issu d'une traduction automatique réalisée par un logiciel Microsoft et non par un traducteur professionnel. Cette traduction automatique a pu aussi être révisée par la communauté Microsoft grâce à la technologie Community Translation Framework (CTF). Pour en savoir plus sur cette technologie, veuillez consulter la page http://support.microsoft.com/gp/machine-translation-corrections/fr. Microsoft vous propose en effet des articles traduits par des professionnels, des articles issus de traductions automatiques et des articles issus de traductions automatiques révisées par la communauté Microsoft, de manière à ce que vous ayez accès à tous les articles de notre Base de connaissances dans votre langue. Il est important de noter que les articles issus de la traduction automatique, y compris ceux révisés par la communauté Microsoft, peuvent contenir des erreurs de vocabulaire, de syntaxe ou de grammaire. Microsoft ne pourra être tenu responsable des imprécisions, erreurs, ainsi que de tout dommage résultant d’une traduction incorrecte du contenu ou de son utilisation par les clients.
La version anglaise de cet article est la suivante: 891032  (http://support.microsoft.com/kb/891032/en-us/ )
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.
Partager
Options de support supplémentaire
Forums du support Microsoft Community
Nous contacter directement
Trouver un partenaire Microsoft Certified Partner
Microsoft Store