首先要了解 ASP.net core 中的配置,请点击这里了解:https://www.jb51.net/article/238451.htm 1,选项接口 ASP.net core
首先要了解 ASP.net core 中的配置,请点击这里了解:https://www.jb51.net/article/238451.htm
ASP.net core 中的选项接口,一共有三个,分别是:
ioptions<TOptions>
IOptionsSnapshot<TOptions>
IOptionsMonitor<TOptions>
这三种方式都可以获取到配置,区别在于生命周期和文件监控等。
首先我们创建一个 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),也不会影响这个对象的。
文档解释:通过使用 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 是单例模式。
--结束END--
本文标题: ASP.NET Core选项接口介绍
本文链接: https://lsjlt.com/news/140122.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2023-05-21
2023-05-21
2023-05-21
2023-05-21
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0