ASP.NET Core 选项
2020-06-07 21:17
393 查看
目录
首先要了解 ASP.NET Core 中的配置,请点击这里了解:https://www.cnblogs.com/whuanle/p/13061059.html
1,选项接口
ASP.NET Core 中的选项接口,一共有三个,分别是:
IOptions<TOptions>
IOptionsSnapshot<TOptions>
IOptionsMonitor<TOptions>
这三种方式都可以获取到配置,区别在于生命周期和文件监控等。
2,注入配置与IOptions
首先我们创建一个 ASP.NET Core API 项目,添加一个 test.json 文件,内容如下:
{ "Title": "测试", "Name": "测试测试" }
再创建一个与之对应的模型类:
public class TestModel { public string Title { get; set; } public string Name { get; set; } }
然后在 Startup 的
ConfigureServices方法中加上:
services.Configure<TestModel>(new ConfigurationBuilder().AddJsonFile("test.json").Build());
这样就可以自动注入配置服务了。那么我们如何接收这个配置呢?
我们可以先使用
IOptions<T>来接收。
添加一个控制器,名字随意,其内容如下:
public class TestController : ControllerBase { private readonly TestModel _options; public TestController(IOptions<TestModel> options) { _options = options.Value; } }
这样就可以接收接入的配置了。
这就是
IOptions<TOptions>的使用。
IOptions<TOptions>有以下特征:
不支持:
- 在应用启动后读取配置数据。
- 命名选项
可以: - 注册为单一实例且可以注入到任何服务生存期。
也就是说,在应用启动前就已经读取配置文件生成对象(单一实例)。当然,后续如果修改了配置文件(.json),也不会影响这个对象的。
3,IOptionsSnapshot
文档解释:通过使用
IOptionsSnapshot<TOptions>,针对请求生存期访问和缓存选项时,每个请求都会计算一次选项。
IOptionsSnapshot 的生命作用域是 scoped ,在一个请求周期内有效。
其它不变,使用时:
private readonly TestModel _options; public TestController(IOptionsSnapshot<TestModel> options) { _options = options.Value; }
由于 IOptionsSnapshot 每次请求都会进行更新,因此配置文件变更后,可以及时获得更新。
IOptionsMonitor 则略有不同:
public class TestController : ControllerBase { private readonly IOptionsMonitor<TestModel> _options; public TestController(IOptionsMonitor<TestModel> options) { _options = options; } [HttpGet("T")] public ContentResult T() { return new ContentResult() { Content = _options.CurrentValue.Title }; } }
IOptionsSnapshot 和 IOptionsMonitor 都可以检测到配置文件的更改,但是 IOptionsSnapshot 每次请求都是一个新的对象,而 IOptionsMonitor 是单例模式。
相关文章推荐
- asp.net core项目发布网站时的选项
- ASP.NET Core 选项模式源码学习Options IOptionsMonitor(三)
- ASP.NET Core 选项模式源码学习Options IOptionsMonitor(三)
- asp.net core 系列 12 选项 TOptions
- ASP.NET Core 选项模式源码学习Options Configure(一)
- ASP.NET Core 选项模式源码学习Options IOptions(二)
- ASP.NET Core 2.2 基础知识(七) 选项模式
- ASP.NET Core 选项模式源码学习Options Configure(一)
- Asp.Net Core中服务的生命周期选项区别和用法
- [ASP.NET Core 3框架揭秘] Options[2]: 配置选项的正确使用方式[下篇]
- (13)ASP.NET Core 中的选项模式(Options)
- Asp.Net Core中服务的生命周期选项区别与用法详解
- ASP.NET Core 选项模式源码学习Options IOptions(二)
- ASP.NET Core 选项模式源码学习Options IOptions(二)
- asp.net core 3.0 选项模式1:使用
- ASP.NET Core WebAPI控制器返回类型的最佳选项
- [译]ASP.NET Core 2.0 会话状态
- 关于asp.net core数据安全的思考
- [NET] Begin ASP.NET Core
- ASP.NET Core 2.0 + EF6 + Linux +MySql混搭