.Net Core 配置文件读取IOptions,IOptionsMonitor,IOptionsSnapshot
GPT4.0+Midjourney绘画+国内大模型 会员永久免费使用!
【 如果你想靠AI翻身,你先需要一个靠谱的工具! 】
前言
众所周知,appsetting.json 配置文件是.Net 的重大革新之心,抛开了以前繁杂的xml文件,使用了更简洁易懂的json方式,简直不要太舒服了!东西虽然好,但怎么在程序中读取这个配置呢,是每个新手必须要跨过去的坑(当然也是包括我这个菜狗子)。
遇事不明上注入,只要是遇到不知道怎么办的事,首先要往注入方便想,框架有了这个配置文件,必然配备了简单直接的读取API,按照我的习惯,直接上代码:
首先,我们在配置文件中,增加 Demo 配置节点:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | { "Logging" : { "LogLevel" : { "Default" : "Information" , "Microsoft.AspNetCore" : "Warning" } }, "Demo" : { "Value1" : "1" , "Value2" : "2" , "Value3" : "3" , "Value4" : "4" } } |
在需要用到配置文件的地方,注入 IConfiguration 服务接口
1 2 3 4 5 6 | private readonly IConfiguration _configuration; public ValuesController(IConfiguration configuration) { _configuration = configuration; } |
通常,我们比较直接的方式是通过 GetSection 获取对应的配置节点,然后再获取对应的配置项
1 2 | var section = _configuration.GetSection( "Demo" ); var value1 = section.GetValue( "Value1" , "1" ); |
如果 Demo 节点内还有更深的节点,GetSection 可以通过 : 深入到对应的下一个节点
appsetting.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | { "Logging" : { "LogLevel" : { "Default" : "Information" , "Microsoft.AspNetCore" : "Warning" } }, "Demo" : { "Value1" : "1" , "Value2" : "2" , "Value3" : "3" , "Value4" : "4" , "Model" { "Name" : "小二" , "Phone" : "12345678911" } } } |
有些小伙伴可能就会问了,那我每个需要用到的地方都需要直接以字符串作为参数去读取配置,以后要是突然改了配置项,岂不是非常麻烦;
这点小伙伴们大可放心,你可以定义一个实体类,然后绑定上去,以后有什么更改了,直接重命名对应的属性就行了,实例代码
方法一:
方法二:
方法三:在 Startup.cs、.Net 6 以上在 Program.cs- 中使用依赖注入方式,以下是 .Net 6
在需要使用的地方注入 IOptions<TOptions> 即可获取到配置值,需要注意的是,IOptions 是单例(Singleton)服务,即在应用启动时进行注册,后续更改配置文件,该 IOptions 将不会同步更新,依然还是旧值
1 2 3 4 5 | 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 文件读取内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
微信公众号搜索 “ 脚本之家 ” ,选择关注
程序猿的那些事、送书等活动等着你
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!
最新评论