2012-10-10 12 views
6

Questo codice cliente ServiceStack funziona:ServiceStack JsonServiceClient, forza il traffico sul cavo per localhost?

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

Tuttavia, quando si osserva il traffico in Fiddler, non vedo nulla. Vorrei osservare il traffico per avere un'idea migliore su come costruire la richiesta JSON richiesta per gli altri client che devo scrivere.

Per far funzionare il codice sopra riportato, ho dovuto fare riferimento all'assembly che ha il servizio e sospetto che ServiceStack stia effettuando alcune chiamate intelligenti per evitare di inviare una richiesta HTTP. È questo il caso?

Perché non vedo traffico in Fiddler e come posso forzarlo?

Il traffico HTTP sugli endpoint localhost tramite il browser viene visualizzato correttamente.

+0

per interesse cosa succede se si sostituisce localhost con il vostro indirizzo IP (LAN)? o dici un nome host che si risolve in 127.0.0.1 nel tuo file hosts? – wal

+1

127.0.0.1 fornisce lo stesso risultato. Un hostname diverso, ma che punta a 127.0.0.1 nel file hosts, mi dà il traffico in Fiddler come desiderato. Grazie ! – driis

+0

Aggiungerò come risposta – wal

risposta

6

Modifica il file hosts, che si trova a

C: \ Windows \ System32 \ drivers \ etc \ hosts

e aggiungere la seguente voce

127.0.0.1 mymachine.com

quindi indirizzare il cliente a mymachine.com anziché localhost

+2

Grazie, questa è stata la soluzione con cui sono andato. Funziona perché il framework .NET non invia richieste locali attraverso i proxy, ma funziona semplicemente definendo un altro nome per localhost. Fiddler in realtà documenta questo: qui: http://www.fiddler2.com/fiddler/help/hookup.asp#Q-LocalTraffic – driis

2

Risponderò alla mia domanda qui - commenter @wal mi ha indicato il problema:

Questo non ha nulla a che fare con ServiceStack e le richieste effettivamente superano il protocollo http. Il problema era il ritorno a localhost non ha inviato il traffico attraverso il violinista. In realtà è spiegato su Fiddler2 FAQ page.

1

L'altro trucco è sostituire il tuo "localhost" uri con il nome del tuo computer, e questo dovrebbe funzionare immediatamente con Fiddler.

http://machinename:port/test

Problemi correlati