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

.NET 5应用如何在数据层(非控制器)读取appsettings.json的配置值

解决方案

步骤1:在Startup类中引入IConfiguration实例

ASP.NET Core默认已将加载完appsettings.json的IConfiguration实现注册到服务容器,直接在Startup构造函数中接收即可,无需自行实现IConfiguration接口:

public class Startup
{
    // 新增私有字段存储配置实例
    private readonly IConfiguration _configuration;

    public Startup(IConfiguration configuration)
    {
        _configuration = configuration;
    }

    // 原有ConfigureServices、Configure方法保留即可
}

步骤2:修正Scheduler实例化逻辑

实例化Scheduler时直接传入已经加载好配置的_configuration字段即可:

public void ConfigureServices(IServiceCollection services)
{            
    services.AddControllers();

    services.AddSingleton(typeof(Config));
    services.AddSingleton(typeof(TokenHelper));
           
    // 传入配置实例即可完成实例化
    Scheduler obj = new Scheduler(_configuration);
    services.AddSingleton<Scheduler>(obj);

    Thread t1 = new Thread(new ThreadStart(obj.CallScheduler));
    t1.Start();
}

可选优化:强类型绑定配置(更推荐)

为了避免硬编码配置Key、实现类型安全,建议把配置绑定到实体类使用:

  1. 定义配置对应实体类
public class AppSettings
{
    public int DelayTimer { get; set; }
    public string Server { get; set; }
    public string DefaultDatabase { get; set; }
}
  1. 在ConfigureServices中添加绑定
services.Configure<AppSettings>(_configuration);
  1. 修改Scheduler构造函数注入强类型配置
public class Scheduler
{    
    private readonly int _delayTime;

    public Scheduler(IOptions<AppSettings> settings)
    {           
        _delayTime = settings.Value.DelayTimer;
        CallScheduler();
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:36:04