c# wpf httpwebrequest webclient fiddler

Cómo usar Fiddler para depurar el tráfico de cualquier aplicación(por ejemplo, la aplicación C#/ WPF)



httpwebrequest webclient (5)

"IIS Express no recibirá tráfico a machinename, así que en su lugar diríjase a localhost.fiddler fiddler2.com/documentation/Configure-Fiddler/Troubleshooting/... - robrich 9 de mayo de 13 a 6:02"

RobRich arriba lo hizo bien. Esto es lo único que funcionó ya que solo puedo usar IIS Express.

Estoy intentando depurar qué está mal con mis solicitudes HTTP de otra pregunta aquí en SO . Así que leí un poco sobre Fiddler y quise usarlo para depurar mi problema. Pero parece que no puedo obtener tráfico de mi aplicación WPF para pasar por Fiddler. Creo que necesito configurar un proxy. Estoy usando un WebClient para un ejemplo básico, pero creo que requeriré una WebRequest más tarde. Pero por ahora, con un simple WebClient, ¿cómo puedo hacer que pase por Fiddler (creo que tengo que establecer el proxy en localhost: 8888)?

ACTUALIZAR:

No sé si hice lo correcto o no, pero lo intenté

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

pero falló - No veo ningún tráfico en Fiddler

Lo intenté ...

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

aún nada


Encontré la solución en esta página de fiddler2.com

¿Por qué no veo el tráfico enviado a http://localhost o http://127.0.0.1?

Internet Explorer y .NET Framework están codificados para no enviar solicitudes de Localhost a través de ningún proxy, y como un proxy, Fiddler no recibirá dicho tráfico.

La solución más simple es usar el nombre de su máquina como nombre de host en lugar de Localhost o 127.0.0.1. Entonces, por ejemplo, en lugar de presionar http://localhost:8081/mytestpage.aspx , en su lugar, visite http://machinename:8081/mytestpage.aspx .


Puede encontrar la respuesta en la siguiente publicación https://.com/a/7506427/471499

Enumera que necesita agregar esto en su web.config O App.Config

<system.net> <defaultProxy> <proxy bypassonlocal="False" usesystemdefault="True" proxyaddress="http://127.0.0.1:8888" /> </defaultProxy> </system.net>

  1. luego, inicie Fiddler en la misma máquina que la aplicación en ejecución.
  2. Haga clic en Herramientas | Fiddler Options => Connections => ajusta el puerto como 8888. (permite el control remoto si lo necesitas)
  3. Ok, luego desde el menú de archivo, captura el tráfico.

Eso es todo, pero no se olvide de eliminar las líneas web.config después de cerrar el violín, porque si no lo hace, se producirá un error.

Referencia: http://fiddler2.com/documentation/Configure-Fiddler/Tasks/UseFiddlerAsReverseProxy



Todo el tiempo utilizo la configuración siguiente para redirigir las llamadas HTTP de red para pasar a través del proxy fiddler de mis aplicaciones.

Esto funciona en todo tipo de aplicaciones .NET (que tienen ya sea web.config o app.config ) y en Fiddler es mejor desactivar la opción de Capture Traffic para evitar la captura de tráfico general de todas las aplicaciones en ejecución. La tecla de acceso directo para esto es F12 .

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

Esta es una configuración valiosa si tiene ensamblajes de terceros en los que no tiene posibilidad de cambiar el código que llama a la URL.

Espero que esto ayude a alguien.