在 HttpClient 上设置代理时出现问题

Problems setting proxy on HttpClient

在我的 C# 应用程序中,我试图向防火墙外的外部公司发送 HTTP 请求。当我使用下面的代码时,我收到远程站点强行关闭连接的错误。我假设我在使用代理设置时做错了什么,但我不确定是什么。我们的代理不需要身份验证。

var content = new StringContent(JsonConvert.SerializeObject(obj), Encoding.UTF8, "application/json");

using (var handler = new HttpClientHandler()) {
    handler.Proxy = new WebProxy("http://proxy.my.domain.com:911");

    using (var client = new HttpClient(handler: handler, disposeHandler: false)) {
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "...");

        var response = await client.PostAsync($"https://...", content);

我已经打印出已发送的编码 JSON,如果我只是通过 curl 手动执行操作,尽管请求是正确的,所以我确定我的 URL, bearer token 和 JSON 都是正确的。

正如评论中提到的,代理变量必须设置为true。我想向遇到同样问题的其他用户强调这一点。

正如docs中提到的那样。

我举了一个小例子,说明如何在 factory 中使用它,例如 class:

private HttpClient ClientFactoryV02()
{
    var clientHandler = new HttpClientHandler(){ UseProxy = true};
    clientHandler.Proxy = new WebProxy("address-of-proxy");

    var client = new HttpClient(clientHandler)
    {
        BaseAddress = new Uri("uri");
    }
}
_createHttpClient = () => ClientFactoryV02();

感谢:ZagNut、Ben。