电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

瀏覽:59日期: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
主站蜘蛛池模板: 小港信息港-鹤壁信息港 鹤壁老百姓便民生活信息网站 | 北京租车公司_汽车/客车/班车/大巴车租赁_商务会议/展会用车/旅游大巴出租_北京桐顺创业租车公司 | 透平油真空滤油机-变压器油板框滤油机-滤油车-华之源过滤设备 | 耐磨陶瓷,耐磨陶瓷管道_厂家-淄博拓创陶瓷科技| 杭州货架订做_组合货架公司_货位式货架_贯通式_重型仓储_工厂货架_货架销售厂家_杭州永诚货架有限公司 | 土壤有机碳消解器-石油|表层油类分析采水器-青岛溯源环保设备有限公司 | 优秀的临床医学知识库,临床知识库,医疗知识库,满足电子病历四级要求,免费试用 | 众品地板网-地板品牌招商_地板装修设计_地板门户的首选网络媒体。 | 仿清水混凝土_清水混凝土装修_施工_修饰_保护剂_修补_清水混凝土修复-德州忠岭建筑装饰工程 | 样品瓶(色谱样品瓶)百科-浙江哈迈科技有限公司 | 中视电广_短视频拍摄_短视频推广_短视频代运营_宣传片拍摄_影视广告制作_中视电广 | 工业制氮机_psa制氮机厂家-宏骁智能装备科技江苏有限公司 | 玻璃钢格栅盖板|玻璃钢盖板|玻璃钢格栅板|树篦子-长沙川皖玻璃钢制品有限公司 | 防火门|抗爆门|超大门|医疗门|隔声门-上海加汇门业生产厂家 | 道康宁消泡剂-瓦克-大川进口消泡剂供应商| 山东锐智科电检测仪器有限公司_超声波测厚仪,涂层测厚仪,里氏硬度计,电火花检漏仪,地下管线探测仪 | 包装设计公司,产品包装设计|包装制作,包装盒定制厂家-汇包装【官方网站】 | 对辊破碎机-液压双辊式,强力双齿辊,四辊破碎机价格_巩义市金联机械设备生产厂家 | 密封圈_泛塞封_格莱圈-[东莞市国昊密封圈科技有限公司]专注密封圈定制生产厂家 | 北京银联移动POS机办理_收银POS机_智能pos机_刷卡机_收银系统_个人POS机-谷骐科技【官网】 | 长城人品牌官网| 施工电梯_齿条货梯_烟囱电梯_物料提升机-河南大诚机械制造有限公司 | 微型驱动系统解决方案-深圳市兆威机电股份有限公司 | 天长市晶耀仪表有限公司 | 魔方网-培训咨询服务平台 | 818手游网_提供当下热门APP手游_最新手机游戏下载 | 深圳工程师职称评定条件及流程_深圳职称评审_职称评审-职称网 | 压力变送器-上海武锐自动化设备有限公司 | 查分易-成绩发送平台官网 | 数字展示在线_数字展示行业门户网站 | 防水套管-柔性防水套管-刚性防水套管-上海执品管件有限公司 | 无线遥控更衣吊篮_IC卡更衣吊篮_电动更衣吊篮配件_煤矿更衣吊篮-力得电子 | 细砂提取机,隔膜板框泥浆污泥压滤机,螺旋洗砂机设备,轮式洗砂机械,机制砂,圆锥颚式反击式破碎机,振动筛,滚筒筛,喂料机- 上海重睿环保设备有限公司 | 低噪声电流前置放大器-SR570电流前置放大器-深圳市嘉士达精密仪器有限公司 | 电车线(用于供电给电车的输电线路)-百科 | 菏泽知彼网络科技有限公司 | 自清洗过滤器,浅层砂过滤器,叠片过滤器厂家-新乡市宇清净化 | PSI渗透压仪,TPS酸度计,美国CHAI PCR仪,渗透压仪厂家_价格,微生物快速检测仪-华泰和合(北京)商贸有限公司 | 陕西高职单招-陕西高职分类考试网| 工业废水处理|污水处理厂|废水治理设备工程技术公司-苏州瑞美迪 今日娱乐圈——影视剧集_八卦娱乐_明星八卦_最新娱乐八卦新闻 | 培训中心-翰香原香酥板栗饼加盟店总部-正宗板栗酥饼技术 |