.net core 读取配置的几种方式

json配置文件示例 

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "Account": {"username": "zhangsan","password":"123"},
  "AllowedHosts": "*"
}

例如读取Account节点数据

方法一

#region 方式1
 string username1 = builder.Configuration["Account:username"];
 string password1 = builder.Configuration["Account:password"];
#endregion
#region 方式2
string username2 = builder.Configuration.GetSection("Account:username").Value;
string password2 = builder.Configuration.GetSection("Account:password").Value;
#endregion
#region 方式3
string username3 = builder.Configuration.GetValue<string>("Account:username");
string password3 = builder.Configuration.GetValue<string>("Account:password");
#endregion

在增加一个数组的节点

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "Account": {
    "username": "zhangsan",
    "password": "123"
  },
  "Port": [1,2,3,4],
  "AllowedHosts": "*"
}

用泛型方法builder.Configuration.GetVaue<T>("key")读取配置的,结果返回null

 对于数组我们只能这样读取

 var Port0 = builder.Configuration.GetValue<int>("Port:0");
 var Port1 = builder.Configuration.GetValue<int>("Port:1");
 var Port2 = builder.Configuration.GetValue<int>("Port:2");
 var Port3 = builder.Configuration.GetValue<int>("Port:3");

因为配置文件都是键值的形式存在,而对于数组而言,下标就是它的键,通过下标找到对应的值 

对于这样太繁琐,我想返回跟配置一样的数组形式 可以这样

var Port=builder.Configuration.GetSection("Port").GetChildren().Select(x => x.Value).ToArray();

运行结果 ,得到我们想要的

 方法二

新建一个类,跟配置文件节点名保持一致

public class Account {
        public string username { get; set; }
        public string password { get; set; }
}

找到这个节点绑定到这个类

  Account account = new Account();
  builder.Configuration.Bind("Account", account);

 运行结果

 

 同理

 对于前面读取数组,也能用绑定方式获取

List<int> Port = new List<int>();    
builder.Configuration.Bind("Port", Port);

以上都是在Program.cs中读取,如何在控制器中读取呢

在Program.cs中加入

 builder.Services.Configure<Account>(builder.Configuration.GetSection("Account"));

在控制器中注入

 private readonly IOptionsSnapshot<Account> optAccountSettings

在接口中

 [HttpGet]
 public IActionResult Account()
 {

   var db = _optAccountSettings.Value;
   return Ok(db);
}

 返回结果

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值