You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core 2.0中HttpClient如何使用系统默认代理?

.NET Core 2.0 中让 HttpClient 使用系统默认代理的解决方案

我之前也踩过这个坑!在.NET Framework里靠web.config几行配置就能搞定的默认代理,到了.NET Core 2.0确实得换个思路——因为Core不再自动读取web.config里的<defaultProxy>节点了。下面分享两种亲测有效的方法:

方法一:手动配置 HttpClientHandler

每次创建HttpClient的时候,直接给它指定带代理配置的Handler:

// 创建带代理设置的Handler
var handler = new HttpClientHandler
{
    // 获取系统默认代理
    Proxy = HttpClientHandler.DefaultProxy,
    // 使用当前用户的凭据访问代理(如果代理需要认证的话)
    UseDefaultCredentials = true
};

// 用这个Handler初始化HttpClient
var httpClient = new HttpClient(handler);

这样你的HttpClient请求就会自动走系统配置的默认代理了。

方法二:全局DI配置(适合ASP.NET Core项目)

如果是ASP.NET Core项目,推荐通过依赖注入全局配置,不用每次创建HttpClient都重复写代码:
在Startup.cs的ConfigureServices方法里添加:

services.AddHttpClient("DefaultProxyClient")
    .ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler
    {
        Proxy = HttpClientHandler.DefaultProxy,
        UseDefaultCredentials = true
    });

之后在需要用的地方,直接注入IHttpClientFactory来获取配置好的HttpClient:

private readonly IHttpClientFactory _httpClientFactory;

public YourService(IHttpClientFactory httpClientFactory)
{
    _httpClientFactory = httpClientFactory;
}

public async Task DoRequest()
{
    var client = _httpClientFactory.CreateClient("DefaultProxyClient");
    // 发起请求...
}

补充说明

  • 如果你系统的代理不需要认证,UseDefaultCredentials可以不用设置,但加上也不会有问题;
  • 不管是控制台应用还是ASP.NET Core项目,这两种方法都适用,核心就是通过HttpClientHandler.DefaultProxy获取系统代理并配置给HttpClient。

内容的提问来源于stack exchange,提问作者coolcake

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:42:30