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

 更新时间:2022年09月02日 10:38:17   作者:一事冇诚  
这篇文章主要介绍了.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"
    }
  }
}
1
var model = _configuration.GetSection("Demo:Model");

有些小伙伴可能就会问了,那我每个需要用到的地方都需要直接以字符串作为参数去读取配置,以后要是突然改了配置项,岂不是非常麻烦;

这点小伙伴们大可放心,你可以定义一个实体类,然后绑定上去,以后有什么更改了,直接重命名对应的属性就行了,实例代码

方法一:

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

方法二:

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

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

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

在需要使用的地方注入  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 文件读取内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

蓄力AI

微信公众号搜索 “ 脚本之家 ” ,选择关注

程序猿的那些事、送书等活动等着你

原文链接:https://www.cnblogs.com/ysmc/p/16637781.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!

相关文章

  • 简单实现.NET Hook与事件模拟实例

    简单实现.NET Hook与事件模拟实例

    这篇文章主要为大家介绍了简单实现.NET Hook与事件模拟实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • 详解如何使用Net将HTML简历导出为PDF格式

    详解如何使用Net将HTML简历导出为PDF格式

    这篇文章主要为大家介绍了详解如何使用Net将HTML简历导出为PDF格式详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • .NET 6 中的隐式命名空间引用

    .NET 6 中的隐式命名空间引用

    这篇文章小编主要向大家介绍的是介绍了.NET 6 中的隐式命名空间引用,其正式版发布之前会专注于各种测试和 BUG 修复,下面就由小编来详细介绍吧,感兴趣的小伙伴可以参考下文
    2021-09-09
  • .NET 6中使用DateOnly和TimeOnly类型

    .NET 6中使用DateOnly和TimeOnly类型

    这篇文章主要介绍了.NET 6中使用DateOnly和TimeOnly类型,在.NET 6(preview 4)中引入了两个期待已久的类型,将作为核心库的一部分。DateOnly和TimeOnly允许开发人员表示DateTime的日期或时间部分,下文具体内容,需要的小伙伴可以参考一下
    2022-01-01
  • Net内存管理五大基础

    Net内存管理五大基础

    这篇文章主要给大家分享Net内存管理五大基础内容,文章讲围绕Net内存管理详细介绍文章内容,感兴趣的朋友可以参考一下,希望对你有所帮助
    2021-10-10
  • NAT网络地址转换详情

    NAT网络地址转换详情

    这篇文章主要以NAT作用和NAT的应用方向及网络配置等多个知识点描述网络地址转换的过程,需要的朋友可以参考下面文章
    2021-08-08
  • ASP.NET入门数据篇

    ASP.NET入门数据篇

    ASP.NET入门数据篇...
    2006-07-07
  • .NET 6 即将到来的新特性  隐式命名空间引用

    .NET 6 即将到来的新特性 隐式命名空间引用

    ASP.NET 现在我们还是需要手动加命名空间引用,在以后的版本中可能就不需要手动加命名空间的引用了,本文就来介绍.NET 6即将到来的新特性--隐式命名空间引用,,需要的朋友可以参考下面文章内容
    2021-09-09
  • ASP.NET学习中常见错误总结归纳

    ASP.NET学习中常见错误总结归纳

    这篇文章主要介绍了asp.net学习过程中碰到的常见错误的解决方法,通读本篇对大家的学习或工作具有一定的价值,需要的朋友可以参考下
    2021-09-09
  • asp.net创建事务的方法

    asp.net创建事务的方法

    本篇文章主要对asp.net创建事务的方法进行实例介绍,具有很好的参考价值,需要的朋友一起来看下吧
    2016-12-12

最新评论