2012-10-10 45 views
6

Este código de cliente ServiceStack funciona:ServiceStack JsonServiceClient, forzar el tráfico en el cable para localhost?

var client = new JsonServiceClient("http://localhost:32949/test"); 
var request = new MyRequest { ClassificationId = new ClassificationId (21300) }; 
var response = client.Post(request); 

Sin embargo, al observar el tráfico en Fiddler, no veo nada. Me gustaría observar el tráfico para tener una mejor idea sobre cómo crear la solicitud JSON requerida para otros clientes que tengo que escribir.

Para hacer que el código anterior funcione, tuve que hacer referencia al ensamblado que tiene el servicio, y sospecho que ServiceStack está haciendo algunas llamadas inteligentes para evitar enviar una solicitud HTTP. Es este el caso ?

¿Por qué no veo ningún tráfico en Fiddler, y cómo lo forzo?

El tráfico HTTP a los puntos finales locales a través del navegador se muestra correctamente.

+0

de interés lo que sucede si se reemplaza localhost con su dirección IP (LAN)? o diga un nombre de host que resuelva a 127.0.0.1 en su archivo de hosts? – wal

+1

127.0.0.1 da el mismo resultado. Un nombre de host diferente, pero apuntando a 127.0.0.1 en el archivo de hosts, me da el tráfico en Fiddler como lo desee. Gracias ! – driis

+0

Voy a agregar como respuesta – wal

Respuesta

6

Editar su archivo de hosts, situada en

C: \ Windows \ System32 \ drivers \ etc anfitriones \

y añadir la siguiente entrada

127.0.0.1 mymachine.com

continuación, dirija su cliente a mymachine.com en lugar de localhost

+2

Gracias, esta fue la solución que fui. Esto funciona porque el framework .NET no envía ninguna solicitud local a través de proxies, sino que simplemente define otro nombre para localhost, funciona. Fiddler realmente documenta esto - aquí: http://www.fiddler2.com/fiddler/help/hookup.asp#Q-LocalTraffic – driis

2

Voy a responder mi propia pregunta aquí - commenter @wal me señaló el problema:

Esto no tiene nada que ver con ServiceStack, y las solicitudes realmente pasan por el protocolo http. El problema era regresar a localhost y no enviar el tráfico a través del violín. En realidad se explica en el Fiddler2 FAQ page.

1

El otro truco es reemplazar su uri "localhost" con el nombre de su máquina, y eso debería funcionar fuera de la caja con Fiddler.

http://machinename:port/test

Cuestiones relacionadas