导航网站前端模板下载,wordpress视频发布站主题,如何开通小程序店铺,微信小程序网站建设公司这节我们来讲一下#xff0c;在ASP.NET Core Web开发中#xff0c;读取配置文件信息的新方式#xff1a;Options。前言 /Options在ASP.NET Web框架中#xff0c;我们读取配置文件中的数据#xff0c;在不使用第三方框架的情况下#xff0c;可能需要通过ConfigurationMana… 这节我们来讲一下在ASP.NET Core Web开发中读取配置文件信息的新方式Options。前言 /Options 在ASP.NET Web框架中我们读取配置文件中的数据在不使用第三方框架的情况下可能需要通过ConfigurationManager这个类去读取配置文件中的信息并且如果我们人为更改了配置文件需要重启系统才能使新的配置数据生效。这种方式并不能称得上优雅和高效。 所以在ASP.NET Core Web框架中微软为我们提供了读取配置信息的新方式——将配置信息映射到数据类中并且配合IOC可以通过依赖注入的方式拿到这个类读取我们想要的信息下面就来了解一下它。如何配置/Options 首先我们需要如下前置信息在appsettings.json中配置要读取的信息如下图此处名称“MyOptions”可自定义对应的编写一个数据类 然后我们就可以选择在Startup.cs中编写配置相关代码(在Program.cs文件中也可以指定配置具体大家可以参考官网文档)请看下图 在ConfigureServices方法中我们可以配置Options。方式有很多种此处仅演示比较简单的几种。通过使用services的Configure/AddOptions泛型方法其泛型类型为要映射的类然后指定要读取的区域(即Section)即可完成配置。默认如果不指定SectionName则自动使用类名进行匹配如果读取SectionName跟映射的类名不一致则使用其重载方法传入SectionName即可。IOptionsT/Options 在完成配置以后就可以使用依赖注入的方式在需要的地方获取到配置信息注入的形式之一是IOptionsT接口泛型T则指定为映射的配置类请看下图 使用IOptionsT注入的配置对象不具有动态性也就是说系统运行时修改配置文件是不会自动更新的。所以可以在类中直接声明配置类对象在构造方法中直接从IOptions的Value属性中取到。 让我们打印出来看一下 这样的形式是优雅的面向对象的但是在系统的整个运行过程中使用IOptionsT注入的配置对象是不会随配置信息的改变而变化的也就说还是要重启才能看到配置信息的更改。IOptionsSnapshotT/Options 当然除了IOptionsT我们还可以使用IOptionsSnapshotT去注入配置对象 IOptionsSnapshot接口提供了对配置信息的更新功能但是并不是实时的在同一个域或者本次请求中如果出现配置信息更改配置对象中的数据是不会变化的也就是保证整个上下文中的配置信息不会改变。为此上述代码中我与IOptions做出对比第一次请求数据两者相同为初始值//第 1 次请求
IOptions:name:Charles,age:18,profession:.NET Developer
IOptionsSnapshot:name:Charles,age:18,profession:.NET Developer然后我修改配置文件进行第二次请求IOptionsSnapshot重新读取了配置信息//第 2 次请求
IOptions:name:Charles,age:18,profession:.NET Developer
IOptionsSnapshot:name:宿春磊,age:19,profession:.NET 开发者IOptionsMonitorT/Options 最后除了IOptionsSnapshot微软还提供了IOptionsMonitor这位则是提供“全天候”的配置监控服务配置文件一改它就立刻更新请看下图 我将三者做一对比在读取前就通过代码更新配置文件因为OptionsPattern是延迟读取的所以在改之前使IOptionsSnapshot读取一遍值这样才能体现出三者的不同//第 1 次请求
IOptions:name:宿春磊,age:19,profession:.NET 开发者
IOptionsSnapshot:name:宿春磊,age:19,profession:.NET 开发者
IOptionsMonitor:name:宿春磊Charles,age:19,profession:.NET 开发者 第二次请求的时候IOptionsSnapshot才取到新值。//第 2 次请求
IOptions:name:宿春磊,age:19,profession:.NET 开发者
IOptionsSnapshot:name:宿春磊Charles,age:19,profession:.NET 开发者
IOptionsMonitor:name:宿春磊Charles,age:19,profession:.NET 开发者本节到此结束...参考:https://docs.microsoft.com/zh-CN/dotnet/core/extensions/options