tmenier/Flurl

Improve error message when using HTTP_PROXY

Open

#522 opened on May 26, 2020

View on GitHub
 (5 comments) (0 reactions) (0 assignees)C# (369 forks)batch import
enhancementhelp wanted

Repository metrics

Stars
 (3,840 stars)
PR merge metrics
 (No merged PRs in 30d)

Description

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