So che ci sono molte domande/risposte, blog su questo, non parlando delle FAQ di Telerik. Ancora non ho potuto trovare questo diagnosticato e risolto in modo chiaro modo puro:Come usare Fiddler con HttpClient?
Contesto:
Ho una web app API, e ho un (test di unità) client, che utilizza HttpClient per inviare le richieste all'API. L'app Web API è in ascolto su http://localhost:8631/ A volte uso Fiddler per vedere cosa sta succedendo.
Problema:
traffico tra il mio HttpClient e API Web non viene catturata da Fiddler. Dopo aver lanciato il traffico di Fiddler è ancora OK, ma non mostrato in Fiddler.
diagnostica finora:
- Importante: utilizzo di qualsiasi browser e l'invio di richieste di http://localhost:8631/sta lavorando, voglio dire: traffico catturato da Fiddler
- Configurazione HttpClient esplicitamente da usare Il violinista come proxy non aiuta.
- Modifica HttpClient url http://localhost:8631/-http://localhost.fiddler: 8631/aiuta, a prescindere dalla procura è stato configurato o meno.
Conclusioni: Almeno il mio caso: non si tratta di HttpClient è configurato in modo esplicito a utilizzare Fiddler come proxy o no. Riguarda il comportamento del localhost di HttpClient e/o Fiddler.
Problema ancora:
Ci si potrebbe chiedere: Problema risolto, allora qual è il problema? Beh ...
Q1: Questo è ancora un problema doloroso, perché l'URL è codificato o configurato da qualche parte (intendo http://localhost:8631/ohttp://localhost.fiddler: 8631 così ogni avvio e l'arresto del violinista si deve essere aggiornato. Altro: controllare il controllo del codice sorgente e verificare su un altro computer da un compagno di squadra può causare problemi. Quindi: C'è qualche soluzione meno dolorosa per questo?
Hard codifica il mio nome macchina (che anche potrebbe funzionare) causa lo stesso dolore e il problema quando si lavora in una squadra e utilizzando il controllo sorgente
Q2: Perché questo comportamento è incoerente: Pure http://localhost:8631/ funziona da qualsiasi browser ma non da HttpClient.
Penso che rispondere a Q2 possa avvicinarci a una soluzione più utilizzabile.
Codice Exhibit
// Using the following url w o r k s regardless of any proxy setting
// ...but it is a pain to hardcode or configure this and change depending on Fiddler is running or not
//private const string ApiUrl = "http://localhost.fiddler:8631/";
// This is not working regardless any proxy setting. Trafic bypasses Fiddler
private const string ApiUrl = "http://localhost:8631/";
protected HttpClient GetClient()
{
var httpClientHandler = new HttpClientHandler
{
// Does not work
//Proxy = new WebProxy("http://localhost:8888", false),
// Does not work
Proxy = WebRequest.DefaultWebProxy,
UseProxy = true
};
var client = new HttpClient(httpClientHandler)
{
BaseAddress = new Uri(ApiUrl)
};
// ...
Non * è necessario * fare nulla per utilizzare Fiddler con HttpClient. Fiddler imposta/reimposta il proxy del sistema operativo predefinito in modo che * non * sia necessario modificare le applicazioni per utilizzarlo. È possibile incorrere in problemi solo se ... si configura con le impostazioni del proxy o si termina Fiddler prima che abbia la possibilità di reimpostare il proxy del sistema operativo, ad esempio arrestando –
Per ottenere assistenza con problemi specifici è necessario pubblicare il codice effettivo , comprese eventuali modifiche alle impostazioni del proxy system.net in app.config –
Hai provato i documenti fiddler per .NET? http://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/ConfigureDotNETApp –