我正在使用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。