DotNet Core HttpClient不尊重Mac上的代理设置

时间:2018-04-04 14:43:03

标签: .net macos .net-core dotnet-httpclient

我有以下代码在没有配置代理的情况下在Mac上运行时工作正常。

    static void Main(string[] args)
    {
        HttpClientHandler handler = new HttpClientHandler();
        var client = new HttpClient(handler);

        string baseUrl = "http://www.bbc.com";

        try
        {
            HttpResponseMessage res = client.GetAsync(baseUrl).Result;
            if (res.IsSuccessStatusCode)
            {
                Console.WriteLine("Success");
            }
            else
            {
                Console.WriteLine("Failed");
            }
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
        }
    }

如果我为此Mac配置代理,请求不会通过代理进行路由。如果我在Safari浏览器上输入URL,它将按预期路由到代理。有没有错误配置的设置?或者DotNet Core不支持这种情况?这导致我们的应用程序在代理后面的公司网络上失败。任何解决方法也表示赞赏。

1 个答案:

答案 0 :(得分:3)

在github上重新评论wfurt的答案。

"我们在封面下使用的curl库不知道如何读取系统设置。 未来的工作将在Angular - Form Validation"

中进行跟踪

解决方法:

export http_proxy=http://proxy.server.com:3128
export https_proxy=http://proxy.server.com:3128

如果代理服务器需要用户名和密码,请包含凭据:https_proxy=http://username:password@proxy.example.com

如果代理服务器使用80以外的端口,请包含端口号:https_proxy=http://username:password@proxy.example.com:8080

如果代理服务器是SOCKS5代理,请在URL中指定SOCKS5协议:https_proxy=socks5://socks_proxy.example.com

参考:#26593