web-dev-qa-db-fra.com

Comment utiliser Fiddler pour déboguer le trafic depuis n'importe quelle application (par exemple, une application C # / WPF)

Je suis sur le point de déboguer ce qui ne va pas avec mes demandes HTTP de ne autre question ici sur SO . J'ai donc lu un peu sur Fiddler et je voulais l'utiliser pour déboguer mon problème. Mais je n'arrive pas à obtenir du trafic de mon application WPF pour passer par Fiddler. Je crois que je dois configurer un proxy. J'utilise un WebClient pour un exemple de base, mais je pense que j'aurai besoin d'une WebRequest plus tard. Mais pour l'instant, avec un WebClient simple, comment puis-je le faire passer par Fiddler (je crois que je dois définir le proxy sur localhost: 8888)?

MISE À JOUR:

Je ne sais pas si j'ai bien fait ou pas mais j'ai essayé

var wc = new WebClient();
WebProxy proxy = new WebProxy();
proxy.Address = new Uri("http://localhost:8888");
wc.Proxy = proxy;

mais a échoué - je ne vois aucun trafic dans Fiddler

J'ai essayé ...

var wc = new WebClient();
WebProxy proxy = new WebProxy("127.0.0.1", 8888);
wc.Proxy = proxy;

toujours rien

37
Jiew Meng

J'ai trouvé la solution sur cette page fiddler2.com

Pourquoi ne vois-je pas le trafic envoyé à http://localhost ou http://127.0.0.1?

Internet Explorer et le .NET Framework sont codés en dur pour ne pas envoyer de demandes de Localhost via des proxy, et en tant que proxy, Fiddler ne recevra pas ce trafic.

La solution de contournement la plus simple consiste à utiliser le nom de votre ordinateur comme nom d'hôte au lieu de Localhost ou 127.0.0.1. Ainsi, par exemple, plutôt que de frapper http://localhost:8081/mytestpage.aspx, visitez plutôt http://machinename:8081/mytestpage.aspx.

52
Jiew Meng

Peut-être un peu tard, mais ...

Je contourne cela simplement en ajoutant un "point" à localhost, donc au lieu d'accéder à localhost, j'essaie d'accéder à localhost. (remarquez le point à la fin du nom d'hôte)

Crédit où le crédit est dû: j'ai obtenu cette astuce inhabituelle de ce fil http://www.west-wind.com/weblog/posts/2009/Jan/14/Monitoring-HTTP-Output-with-Fiddler- In-NET-HTTP-Clients-and-WCF-Proxies # 596591

Fonctionne bien!

16
Lee Francis

Vous pouvez trouver la réponse ci-dessous https://stackoverflow.com/a/7506427/471499

il indique que vous devez l'ajouter dans votre web.config OR App.Config

<system.net>
  <defaultProxy>
    <proxy bypassonlocal="False" usesystemdefault="True" proxyaddress="http://127.0.0.1:8888" />
  </defaultProxy>
</system.net>
  1. puis démarrez Fiddler sur la même machine que l'application en cours d'exécution.
  2. Cliquez sur Outils | Options Fiddler => Connexions => réglez le port sur 8888. (autorisez la télécommande si vous en avez besoin)
  3. Ok, puis à partir du menu fichier, capturez le trafic.

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

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

12
Tarek El-Mallah

Tout le temps, j'utilise la configuration ci-dessous pour rediriger les appels HTTP du réseau pour passer par le proxy fiddler de mes applications.

Cela fonctionne dans toutes sortes d'applications .NET (qui ont soit web.config ou app.config file) et dans fiddler de son mieux pour désactiver Capture Traffic option pour éviter de capturer le trafic général de toutes les applications en cours d'exécution. La touche de raccourci pour cela est F12.

<system.net>
    <defaultProxy>
        <proxy proxyaddress="http://localhost:8888/" />
    </defaultProxy>
</system.net>

C'est une configuration précieuse si vous avez des assemblys tiers dans lesquels vous n'avez aucune chance de changer le code qui appelle l'URL.

J'espère que ça aidera quelqu'un.

3
Harsh Baid

"IIS Express ne recevra pas de trafic vers le nom de la machine, alors dirigez-vous vers localhost.fiddler fiddler2.com/documentation/Configure-Fiddler/Troubleshooting/… - robrich 9 mai 13 à 6:02"

RobRich ci-dessus a bien compris. C'est la seule chose qui a fonctionné car je ne peux utiliser que IIS Express.

1
RandallTo