test snippet programar portable online jdoodle ejecutar compiler compilador c# fiddler

snippet - ejecutar c# online



¿Hay alguna forma de configurar Fiddler para que intercepte llamadas HTTP desde un servicio de Windows? (5)

Como .NET pasa por alto los proxies para localhost y 127.0.0.1, simplemente codifique el nombre de su máquina en lugar de la url con la que está realizando la prueba.

//myUrl = "http://127.0.0.1/myservice"; myUrl = "http://mymachine/myservice";

Estamos en el proceso de reemplazar una antigua aplicación de servicio de Windows (5+ años) construida con VS2005 que realiza una llamada HTTP GET. Hay varias cosas que dificultan esto (como que el servidor web está en la red del cliente y no podemos conectarnos directamente a él) y, desafortunadamente, preferimos no eliminar el sistema en ejecución para reemplazarlo con un WinForm Versión que puede ser monitoreada por Fiddler. El nuevo código parece estar haciendo todo correctamente, pero, por desgracia, no se puede autenticar.

¿Hay alguna forma de configurar Fiddler (2.2.9.1) para interceptar llamadas HTTP de un servicio de Windows?


Fiddler simplemente actúa como un proxy HTTP, por lo que si puede configurar un proxy en su servicio, puede configurarlo para que pase por Fiddler. Si eso es posible es difícil de decir ...

Si eso no funciona, puede hacerlo ejecutando Fiddler en una segunda computadora y configurándolo para que escuche en el puerto 80. Luego, en su computadora "de prueba", edite el archivo de hosts para que apunte a la segunda computadora. Entonces, digamos que el servicio web está en www.example.com, configura su servidor de prueba para que "www.example.com" apunte a su segunda computadora (ejecutando Fiddler). Luego, cuando el servicio se conecte a "www.example.com", realmente se conectará a Fiddler. Fiddler luego reenviará la conexión al www.example.com real después de registrar la solicitud / respuesta.

No he probado lo anterior, pero creo que funcionaría. Obviamente, si puede configurar los ajustes de proxy en su servicio, ¡sería más fácil!


Nota: Importante: Independientemente de otras configuraciones, .NET siempre omitirá el proxy de Fiddler para las URL que contienen localhost. Entonces, en lugar de usar localhost, cambie su código para referirse al nombre de la máquina. Por ejemplo:

Esta URL no aparecerá en Fiddler:

http://localhost/X509SignCodeService/X509SigningService.asmx Esta URL aparecerá en Fiddler:


Y, por supuesto, si Fiddler no funciona, siempre hay Wireshark . Como sugerencia, use un par de filtros en Wireshark (por ejemplo, muestre solo los paquetes que van o vienen de la IP de destino) para evitar sentirse como si estuvieran saturados de datos.


Codeka proporcionó una pista para que yo vaya en la dirección correcta. La pieza que aún faltaba era cómo configurar el proxy. El <appname>.exe.config necesitaba tener una sección como la siguiente agregada:

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

Una vez hecho esto, el tráfico http del servicio de Windows comenzó a fluir a través de Fiddler.