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
ohttp://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, visitehttp://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>
- luego, inicie Fiddler en la misma máquina que la aplicación en ejecución.
- Haga clic en Herramientas | Fiddler Options => Connections => ajusta el puerto como 8888. (permite el control remoto si lo necesitas)
- 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
Tal vez un poco tarde, pero ...
Me salgo de esto simplemente agregando un "punto" a localhost, así que en lugar de acceder a localhost
, trato de acceder a localhost.
(observe el punto al final del nombre de host)
Crédito por el cual se debe crédito: obtuve este consejo inusual de este hilo http://www.west-wind.com/weblog/posts/2009/Jan/14/Monitoring-HTTP-Output-with-Fiddler-in-NET-HTTP-Clients-and-WCF-Proxies#596591
¡Funciona bien!
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.