110 votes

Comment utiliser Fiddler pour surveiller un service WCF ?

J'ai un service WCF qui accepte un type complexe et renvoie des données. Je veux utiliser Fiddler pour voir à quoi ressemblent les requêtes entrantes vers le service. Le client est une application console .net qui utilise un proxy de référence de service. Est-ce possible avec Fiddler ? Je suis nouveau dans cet outil et je l'ai seulement utilisé dans le passé pour poster des données avec le request builder.

4 votes

Les services de traçage WCF sont assez bons en eux-mêmes, y compris une belle interface graphique pour les visualiser. msdn.microsoft.com/fr/us/library/ms751526.aspx

150voto

Tarek El-Mallah Points 971

Vous devez ajouter ceci dans votre web.config

<system.net>
  <defaultProxy>
    <proxy bypassonlocal="False" usesystemdefault="True" proxyaddress="http://127.0.0.1:8888" />
  </defaultProxy>
</system.net>
  1. puis Démarrer Fiddler sur la machine WEBSERVER.
  2. Cliquez sur Outils | Options Fiddler => Connexions => réglez le port sur 8888 (autorisez les connexions à distance si vous en avez besoin).
  3. Ok, puis dans le menu fichier, capturez le trafic.

C'est tout, mais n'oubliez pas de supprimer les lignes du web.config après avoir fermé le fiddler, car si vous ne le faites pas, il produira une erreur.

Référence : http://fiddler2.com/documentation/Configure-Fiddler/Tasks/UseFiddlerAsReverseProxy

1 votes

Merci, ça m'a beaucoup aidé aussi. Mon erreur était de ne pas préciser http:// dans l'adresse proxy. Tout le reste était identique, comme vous l'avez mentionné.

1 votes

Ma situation est la suivante : le serveur est IIS7.5, le client est une application console. Dans mon application console, j'ai appelé une méthode WebService qui est déployée sur IIS7.5 sur mon ordinateur de développement. Remplacer "localhost" par le nom de mon ordinateur a fonctionné pour moi.

5 votes

Merci, ça a marché pour moi. En passant, dans mon cas, j'ai essayé de capturer le trafic du client WCF sur localhost Ainsi, outre l'ajout de vos paramètres, il fallait également modifier l'URL de la manière suivante http://localhost/abc.svc a http://HOSTNAME/abc.svc

10voto

L-Three Points 4465

J'ai eu ce problème, ce qui a fonctionné pour moi était d'utiliser localhost.fiddler :

 <endpoint address="http://localhost.fiddler/test/test.svc"
            binding="basicHttpBinding" 
            bindingConfiguration="customBinding" 
            contract="test" 
            name="customBinding"/>

9voto

Justin Niessner Points 144953

Fiddler écoute les requêtes sortantes plutôt que les requêtes entrantes. Vous ne pourrez donc pas surveiller toutes les requêtes qui arrivent à votre service en utilisant Fiddler.

Le mieux que vous puissiez obtenir avec Fiddler est la possibilité de voir toutes les requêtes telles qu'elles sont générées par votre application Console (en supposant que l'application génère des requêtes web plutôt que d'utiliser un autre pipeline).

Si vous voulez un outil plus puissant (mais plus difficile à utiliser) qui vous permettra de surveiller TOUTES les demandes entrantes, vous devriez consulter WireShark.

Modifier

Je me suis trompé. Merci à Eric Law d'avoir posté les instructions pour configurer Fiddler pour être un proxy inverse !

0 votes

Merci pour l'information. J'ai besoin de visualiser la structure de la requête de manière similaire à la page de description des services asmx. WCF ne semble pas avoir cette option.

10 votes

Ce n'est pas tout à fait exact (et la "puissance" est subjective, puisque WireShark ne peut pas modifier le trafic). Voir fiddler2.com/fiddler/help/reverseproxy.asp pour plus de détails sur la façon d'écouter le trafic entrant.

0 votes

Eric - Je vous suggère de le préciser dans une réponse indépendante.

4voto

Ziv.Ti Points 222

C'est très simple, il suffit de changer l'adresse dans le client de configuration : au lieu de 'localhost', changez le nom de la machine ou l'IP.

1voto

Cheeso Points 87022

C'est simple si vous avez le contrôle du client qui envoie les communications. Tout ce que vous avez à faire est de définir le HttpProxy sur la classe de service côté client.

Je l'ai fait, par exemple, pour tracer un client de service web fonctionnant sur un smartphone. J'ai défini le proxy de cette connexion côté client sur l'IP/port de Fiddler, qui était exécuté sur un PC du réseau. L'application du smartphone a ensuite envoyé toutes ses communications sortantes au service web, via Fiddler.

Cela a parfaitement fonctionné.

Si votre client est un client de WCF, alors voir cette Q&R pour savoir comment définir le proxy.

Même si vous n'avez pas la possibilité de modifier le code de l'application côté client, vous pouvez peut-être définir le proxy de manière administrative, en fonction de la pile de services Web utilisée par votre client.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X