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

如何从appsettings.json读取配置完成HttpClient/HttpMessageHandler配置

实现方案

1. 定义配置映射实体类

首先创建和配置节结构对应的实体类,用于配置绑定:

public class TrackAndTraceSettings
{
    public string DebugBaseUrl { get; set; }
    public string BaseUrl { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
    public string CompanyCode { get; set; }
}

2. 注册配置绑定

在服务注册阶段完成配置节和实体类的绑定,配置只会在此阶段读取一次:

// 若为.NET 6+ Minimal API 写法,将Configuration替换为builder.Configuration
services.Configure<TrackAndTraceSettings>(Configuration.GetSection("TrackAndTrace"));

3. 改造HttpClient注册逻辑

使用ConfigurePrimaryHttpMessageHandler带服务提供者参数的重载,从容器中读取已绑定好的配置:

services.AddHttpClient<TestApi>()
    .ConfigurePrimaryHttpMessageHandler(sp =>
    {
        // 从容器中获取配置,IOptions<T>为单例,仅初始化读取一次配置
        var settings = sp.GetRequiredService<IOptions<TrackAndTraceSettings>>().Value;
        return new HttpClientHandler()
        {
            Credentials = new NetworkCredential(settings.Username, settings.Password),
        };
    });

方案说明

ASP.NET Core 自带的IOptions<T>默认是单例生命周期,配置仅在应用启动时从配置文件绑定一次,后续直接从内存读取,完全满足高效读取的要求,同时符合官方配置规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:45:03