色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

.Net Core 配置文件讀取IOptions,IOptionsMonitor,IOptionsSnapshot

瀏覽:20日期:2022-06-08 11:46:11

前言

眾所周知,appsetting.json 配置文件是.Net 的重大革新之心,拋開了以前繁雜的xml文件,使用了更簡潔易懂的json方式,簡直不要太舒服了!東西雖然好,但怎么在程序中讀取這個配置呢,是每個新手必須要跨過去的坑(當然也是包括我這個菜狗子)。

遇事不明上注入,只要是遇到不知道怎么辦的事,首先要往注入方便想,框架有了這個配置文件,必然配備了簡單直接的讀取API,按照我的習慣,直接上代碼:

首先,我們在配置文件中,增加 Demo 配置節點:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "Demo": {
    "Value1": "1",
    "Value2": "2",
    "Value3": "3",
    "Value4": "4"
  }
}

在需要用到配置文件的地方,注入 IConfiguration 服務接口

private readonly IConfiguration _configuration;

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

通常,我們比較直接的方式是通過 GetSection 獲取對應的配置節點,然后再獲取對應的配置項

var section = _configuration.GetSection("Demo");
var value1 = section.GetValue("Value1", "1");

如果 Demo 節點內還有更深的節點,GetSection 可以通過 : 深入到對應的下一個節點

appsetting.json 

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "Demo": {
    "Value1": "1",
    "Value2": "2",
    "Value3": "3",
    "Value4": "4",
    "Model" {
      "Name": "小二",
      "Phone": "12345678911"
    }
  }
}
var model = _configuration.GetSection("Demo:Model");

有些小伙伴可能就會問了,那我每個需要用到的地方都需要直接以字符串作為參數去讀取配置,以后要是突然改了配置項,豈不是非常麻煩;

這點小伙伴們大可放心,你可以定義一個實體類,然后綁定上去,以后有什么更改了,直接重命名對應的屬性就行了,實例代碼

方法一:

var options = new DemoOptions();
_configuration.GetSection("Demo").Bind(options);

方法二:

var options2 = _configuration.GetSection("Demo").Get<DemoOptions>();

方法三:在 Startup.cs、.Net 6 以上在 Program.cs- 中使用依賴注入方式,以下是 .Net 6 

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

在需要使用的地方注入  IOptions<TOptions> 即可獲取到配置值,需要注意的是,IOptions 是單例(Singleton)服務,即在應用啟動時進行注冊,后續更改配置文件,該 IOptions 將不會同步更新,依然還是舊值 

private readonly DemoOptions _demoOptions;
public ValuesController(IOptions<DemoOptions> options)
{
    _demoOptions = options.Value;
}

如需要配置進行熱更新,只需要改成注入 IOptionsMonitor<TOptions> 或者 IOptionsSnapshot<TOptions>;IOptionsSnapshot<TOptions>的生命周期是作用域(Scoped),每次請求都會重新獲取一次配置;IOptionsSnapshot<TOptions> 的生命周期是單例(Singleton),與 IOptions<TOptions> 不一樣的是當配置文件發生改變時,將會自動同步響應。

到此這篇關于.Net Core 配置文件讀取IOptions,IOptionsMonitor,IOptionsSnapshot的文章就介紹到這了,更多相關.Net Core 文件讀取內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: ASP.NET
主站蜘蛛池模板: 97久久精品一区二区三区 | 亚洲综合久久综合激情久久 | 一级毛片黄片 | 怡红院亚洲 | 视频一二三区 | 一区二区三区视频免费观看 | 91亚洲国产成人久久精品网址 | 女人把腿劈开让男人桶的网站 | 夜色成人性y | 国产国产人免费视频成69堂 | 亚洲人的天堂男人爽爽爽 | 国产精品成人久久久久久久 | 日韩欧美理论 | 一级做性色a爰片久久毛片 一级做性色a爰片久久毛片免费 | 最新亚洲精品国自产在线观看 | 美女午夜影院 | 国产日韩欧美一区二区三区综合 | 欧美性极品hd高清视频 | 欧美高清日本三级人妇 | 国产一区二区三区在线看 | 亚洲第一页在线 | 久草免费在线色站 | 131的美女午夜爱爱爽爽视频 | 99久久国产免费 - 99久久国产免费 | 白浆在线视频 | 男女很舒服爽视频免费 | 国产成人刺激视频在线观看 | 美国毛片毛片全部免费 | 特级毛片在线播放 | 思99re久久这里只有精品首页 | 99久久香蕉国产综合影院 | 老司机深夜影院入口aaaa | 日本在线不卡免 | 黄色aaaa| 在线观看国内自拍 | 毛片96视频免费观看 | 久久riav.com| 67id人成国产在线 | 爽爽窝窝午夜精品一区二区 | 国产精品线在线精品国语 | 香蕉亚洲精品一区二区 |