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

.NET Core 6.0仓储类读取secrets.json及IConfiguration注入方法

在.NET Core 6.0 Web API的仓储类中读取secrets.json的值

需要通过依赖注入IConfiguration来实现,不过更推荐使用强类型配置类的方式(解耦且更易维护),下面分别说明两种方案:


方案一:直接注入IConfiguration

1. 在仓储类中通过构造函数注入IConfiguration

public class ProductRepository
{
    private readonly IConfiguration _config;

    // 构造函数注入IConfiguration实例
    public ProductRepository(IConfiguration config)
    {
        _config = config;
    }

    public void ExecuteDatabaseQuery()
    {
        // 读取secrets.json中的数据库连接字符串
        // 假设secrets.json里配置了"ConnectionStrings": {"ProductDb": "xxx"}
        string connectionString = _config.GetConnectionString("ProductDb");
        
        // 或者直接读取单个密钥值
        // string apiKey = _config["ThirdPartyApiKey"];

        // 后续用连接字符串初始化数据库连接并执行操作
    }
}

2. 将仓储类注册到依赖注入容器

在Program.cs的顶级语句中,添加仓储类的DI注册:

// 根据业务需求选择AddScoped/AddTransient/AddSingleton
builder.Services.AddScoped<ProductRepository>();

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

直接依赖IConfiguration会让仓储类和框架耦合,强类型配置类提供类型安全、编译检查和更好的可测试性。

1. 创建强类型配置类

public class DatabaseConfig
{
    // 属性名要和secrets.json中的配置键对应
    public string ProductDbConnection { get; set; } = string.Empty;
}

2. 在Program.cs中绑定配置

假设你的secrets.json结构如下:

{
  "DatabaseConfig": {
    "ProductDbConnection": "Server=...;Database=...;User Id=...;Password=..."
  }
}

在Program.cs中绑定配置到强类型类:

// 绑定配置节到强类型类
builder.Services.Configure<DatabaseConfig>(builder.Configuration.GetSection("DatabaseConfig"));

3. 在仓储类中注入IOptions

public class ProductRepository
{
    private readonly string _connectionString;

    public ProductRepository(IOptions<DatabaseConfig> dbConfig)
    {
        _connectionString = dbConfig.Value.ProductDbConnection;
    }

    public void ExecuteDatabaseQuery()
    {
        // 使用_connectionString执行数据库操作
    }
}

注意事项

  • 确保secrets.json已正确配置(右键项目→管理用户机密可打开编辑)
  • 仓储类必须通过依赖注入获取实例,不能手动new(否则注入的IConfiguration或IOptions会为null)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 00:22:27