tmenier/Flurl

Improve error message when using HTTP_PROXY

Offen

#522 geöffnet am 26.05.2020

 (5 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)C# (369 Forks)batch import
enhancementhelp wanted

Repository-Metriken

Stars
 (3.840 Sterne)
PR-Merge-Metriken
 (Keine gemergten PRs in 30 T)

Beschreibung

LinqPad snippet:

Environment.SetEnvironmentVariable("HTTP_PROXY", "http://localhost:8080");
"http://google.com".GetAsync().Dump();

With this environment variable set, System.Net.Http.HttpClient has the static property DefaultProxy set to System.Net.Http.HttpEnvironmentProxy, which acts as a proxy for all the requests. When the proxy server is not accessible the error message generates is:

Call failed. No connection could be made because the target machine actively refused it.
GET http://google.com

at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)   at 
System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean allowHttp2, CancellationToken cancellationToken)   at 
System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)   at 
System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)   at 
System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)   at 
System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)   at 
System.Net.Http.DecompressionHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)   at 
System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)   at 
Flurl.Http.FlurlRequest.SendAsync(HttpMethod verb, HttpContent content, CancellationToken cancellationToken, HttpCompletionOption completionOption) | at 
System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)   at 
System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean allowHttp2, CancellationToken cancellationToken)   at 
System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)   at 
System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)  

Whilst this is correct, no connection could be made to http://google.com it is because of the proxy server. I didn't realize I had an environment variable set, and spend a while trying to figure out what on earth was going on, would it be possible to enchance the error message when a proxy server is being used?

Contributor Guide