代码改变世界

.net core Configuration 配置

  Tony、  阅读(1639)  评论(1编辑  收藏  举报

.net core 配置包括很多种 例如内存变量、命令行参数、环境变量以及物理文件配置和自定义配置

物理文件配置主要有三种,它们分别是JSON、XML和INI,对应的配置源类型分别是JsonConfigurationSource、XmlConfigurationSource和IniConfigurationSource 这里主要讲JSON的配置

读取配置文件 

{

"AllowedHosts": "*",

 "Logging": {
                   "IncludeScopes": false,
                   "LogLevel": {
                                 "Default": "Warning"
                                     }
                    }

   "Arry": [ { "Name": "zhangsan" }, { "Name": "lisi" }, { "Name": "wangwu" } ]
}

1.使用Key读取

Configuration["AllowedHosts"]; // 结果 *

Configuration["Logging:IncludeScopes"]; // 结果 false

Configuration["Logging:LogLevel:Default"]; // 结果 Warning

Configuration["Arry:0:Name"]; // 结果 zhangsan

小结:读取嵌套的配置,使用冒号隔开;读取数组形式的配置,使用数组的下标索引,0表示第一个。

2.使用GetValue<T>

Configuration.GetValue<string>("AllowedHosts"); // 结果 *

Configuration.GetValue<bool>("Logging:IncludeScopes"); // 结果 false

小结:GetValue方法的泛型形式还有一个GetValue("key",defaultValue)重载。如果key的配置不存在,则为指定的默认值。

3.使用Options

  配置文件

      {

        "Name": "zhangsan",          

           "Age": 22,

        "Company",{

                "Id":1,

                "Address":"中国 北京"

              }
                     }

 

  public class User

   {

    public string Name { get; set; }

    public int Age { get; set; }

    public class Company

            {

              public int Id {get;set;}

              public string Address{get;set;}

            }

 

  }

注入:

services.Configure<User>(Configuration);

services.Configure<Company>(Configuration.GetSection("Company"));

services.Configure<Company>(Configuration.GetSection("User:Company"));

读取:

  构造函数读取

 private readonly User _user;
 public GetConfig(IOptions<User> _o
ptions
) 
 { _user = _option.Value; }
  ServiceProvider读取 serviceProvider.GetService<IOptions<User>>().Vlaue

4.使用Bind
var user = new User(); Configuration.Bind(user);
var company=new Company();Configuration.GetSection("Conpany").Bind(company);
Bind
var user = new User(); Configuration.Bind(user);
var company=new Company();Configuration.GetSection("Conpany").Bind(company);
4.使用Get<T>
var user = Configuration.Get<User>();或者var commpany = Configuration.GetSection("Company").Get<Company>();
Get<T>
var user = Configuration.Get<User>();或者var commpany = Configuration.GetSection("Company").Get<Company>();

 
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示