我正在使用Microsoft HTTP Client Libraries - PCL(通过NuGet安装)与公共REST API通信。因为我在公司防火墙后面,所以我需要在HttpClientHandler上配置代理信息。

但是,在HttpClientHandler上设置代理时,它将引发以下错误:


  找不到方法:“无效System.Net.Http.HttpClientHandler.set_Proxy(System.Net.IWebProxy)”。


我的代码没有什么特别的,所以我有点困惑:

var handler = new HttpClientHandler
{
    UseDefaultCredentials = false,
    Proxy = new DefaultProxy
    {
        Credentials =
            new NetworkCredential(
                "firstname.lastname",
                "P4ssw0rd",
                "DOMAIN")
    },
    UseProxy = true
};

this.client = new HttpClient(handler);


一些注意事项:


我已成功将标准.Net库(即非PCL)中的HttpClientHandler用于另一个项目,因此我知道代理信息是正确的。
绕过代理服务器后(即在公司网络外部或没有代理服务器),我已经成功检索了数据。
DefaultProxy实现IWebProxy。

最佳答案

此错误是由于未在使用方项目上安装HttpClient包引起的。您应该得到类似的警告:

引用[使用方项目]的所有项目都必须安装nuget包Microsoft.Bcl.Build。

基本上,每个引用类库的引用HttpClient&Async的对象都必须也引用HttpClient&Async。

10-06 04:22