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

.NET Core 7 Minimal API服务类中如何访问appsettings?

在.NET Core 7 Minimal API的服务类中访问AppSettings的正确方式

方法一:直接注入IConfiguration

  • 第一步:在Program.cs中注册你的服务类(根据业务需求选择生命周期:Scoped/Transient/Singleton)
var builder = WebApplication.CreateBuilder(args);
builder.Configuration.AddJsonFile("appsettings.Local.json", true);

// 注册服务类到DI容器
builder.Services.AddScoped<YourService>();

var app = builder.Build();
// ... 其他端点配置
  • 第二步:在服务类的构造函数中接收IConfiguration实例,之后即可直接访问配置项
public class YourService
{
    private readonly IConfiguration _config;

    public YourService(IConfiguration config)
    {
        _config = config;
    }

    public string GetParameterA()
    {
        // 通过键路径读取配置
        return _config["groupParameterOne:ParameterA"] ?? string.Empty;
    }
}
  • 第三步:在Minimal API端点中注入服务类使用
app.MapGet("/get-param", (YourService service) =>
{
    var paramA = service.GetParameterA();
    return Results.Ok(new { ParameterA = paramA });
});

方法二:使用强类型配置(推荐)

这种方式更类型安全,便于维护和测试,适合配置项较多的场景。

  • 第一步:创建对应配置节点的强类型类
public class GroupParameterSettings
{
    public string ParameterA { get; set; } = string.Empty;
    // 可添加同组下的其他配置属性
}
  • 第二步:在Program.cs中绑定配置并注册到DI容器
var builder = WebApplication.CreateBuilder(args);
builder.Configuration.AddJsonFile("appsettings.Local.json", true);

// 将配置节点绑定到强类型类,并注册到DI
builder.Services.Configure<GroupParameterSettings>(builder.Configuration.GetSection("groupParameterOne"));
// 注册服务类
builder.Services.AddScoped<YourService>();

var app = builder.Build();
// ... 其他端点配置
  • 第三步:在服务类中注入IOptions<GroupParameterSettings>
public class YourService
{
    private readonly GroupParameterSettings _settings;

    public YourService(IOptions<GroupParameterSettings> settings)
    {
        _settings = settings.Value;
    }

    public string GetParameterA()
    {
        // 直接访问强类型属性
        return _settings.ParameterA;
    }
}
  • 第四步:在Minimal API端点中使用服务类(和方法一一致)

为什么不推荐静态类方案

静态类存储配置会导致:

  • 耦合度高,难以替换配置源(比如单元测试时无法轻松切换为内存配置)
  • 不符合依赖注入的设计原则,降低代码的可测试性和可维护性
  • 无法利用DI容器的生命周期管理特性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 12:55:18