.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
相关产品推荐
相关产品推荐

