亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

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

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

前言

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

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

首先,我們?cè)谂渲梦募校黾?Demo 配置節(jié)點(diǎn):

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

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

private readonly IConfiguration _configuration;

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

通常,我們比較直接的方式是通過(guò) GetSection 獲取對(duì)應(yīng)的配置節(jié)點(diǎn),然后再獲取對(duì)應(yīng)的配置項(xiàng)

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

如果 Demo 節(jié)點(diǎn)內(nèi)還有更深的節(jié)點(diǎn),GetSection 可以通過(guò) : 深入到對(duì)應(yīng)的下一個(gè)節(jié)點(diǎn)

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");

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

這點(diǎn)小伙伴們大可放心,你可以定義一個(gè)實(shí)體類,然后綁定上去,以后有什么更改了,直接重命名對(duì)應(yīng)的屬性就行了,實(shí)例代碼

方法一:

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)服務(wù),即在應(yīng)用啟動(dòng)時(shí)進(jìn)行注冊(cè),后續(xù)更改配置文件,該 IOptions 將不會(huì)同步更新,依然還是舊值 

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

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

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

標(biāo)簽: ASP.NET
主站蜘蛛池模板: 天天狠狠色噜噜 | 久久国产成人福利播放 | 免费大片黄在线观看日本 | 国产亚洲青色国产 | 精品高清写真视频在线 | 亚洲欧美精品国产一区色综合 | 一级视频在线观看 | 一级毛片在线免费视频 | 亚洲国产另类久久久精品小说 | 亚洲综合激情五月色播 | 天天在线天天看成人免费视频 | 国产在线观看91精品2022 | 国产午夜视频 | 亚洲在线观看免费视频 | 亚洲一级毛片免费观看 | 黄色免费看视频 | 国产夜色 | 国产99r视频精品免费观看 | 成人嘿嘿视频网站在线 | www.久久久| 一级成人毛片免费观看 | 三级网战 | 久久婷婷色香五月综合激情 | 黄色永久网站 | 久久综合精品国产一区二区三区 | 色老头网站久久网 | 欧美特级毛片 | 国产原创视频在线 | 国内精品久久久久久西瓜色吧 | 狠狠五月婷婷 | 亚洲精品亚洲人成在线观看麻豆 | 亚洲精品美女一区二区三区乱码 | 亚洲欧美日本国产综合在线 | 综合色图| 欧美性黄色 | 国产在线拍揄自揄视精品不卡 | 精品一区二区三区免费视频 | 一级日韩片 | 亚洲另类视频在线观看 | 欧美成a人片在线观看久 | 正在播放国产精品白丝在线 |