【问题标题】:Method not found when setting proxy in HttpClientHandler Portable Class Library (PCL)在 HttpClientHandler 可移植类库 (PCL) 中设置代理时找不到方法
【发布时间】:2013-08-02 01:20:11
【问题描述】:

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

但是,在 HttpClientHandler 上设置代理时,会抛出以下错误:

找不到方法:'Void 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。

【问题讨论】:

    标签: c# portable-class-library dotnet-httpclient base-class-library


    【解决方案1】:

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

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

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

    【讨论】:

    • 这是因为 IWebProxy 和它存在的程序集。我们做了一些诡计,以便在所有平台上将其视为相同类型 - 除非您将包安装到使用项目中,否则我们不知道要部署哪个二进制文件,而是部署引用项目中的二进制文件,这会导致到这个错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-06
    • 1970-01-01
    相关资源
    最近更新 更多