ASP.NET Core选项接口介绍

 更新时间:2022年02月23日 09:00:54   作者:痴者工良  
这篇文章介绍了ASP.NET Core中的选项接口,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

首先要了解 ASP.NET Core 中的配置,请点击这里了解:https://www.jb51.net/article/238451.htm

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选项接口的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 详解VS2017 Linux 上.NET Core调试

    详解VS2017 Linux 上.NET Core调试

    这篇文章主要介绍了详解VS2017 Linux 上.NET Core调试,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • [译]ASP.NET Core 2.0 路由引擎详解

    [译]ASP.NET Core 2.0 路由引擎详解

    本篇文章主要介绍了[译]ASP.NET Core 2.0 路由引擎,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • .Net MVC将Controller数据传递到View

    .Net MVC将Controller数据传递到View

    这篇文章介绍了.Net MVC将Controller数据传递到View的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • .NetCore之接口缓存的实现示例

    .NetCore之接口缓存的实现示例

    这篇文章主要介绍了.NetCore之接口缓存的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • .NET实现文件跨服务器上传下载的方法

    .NET实现文件跨服务器上传下载的方法

    这篇文章主要给大家介绍了.NET文件如何实现跨服务器上传下载的方法,文中通过图片介绍的很详细,相信对大家的理解和学习具有一定的参考借鉴价值,有需要的朋友们可以跟着小编来一起学习学习吧。
    2016-12-12
  • ASP.NET数据绑定之GridView控件

    ASP.NET数据绑定之GridView控件

    这篇文章主要为大家介绍了ASP.NET数据绑定中的GridView控件,GridView控件的功能是在web页面中显示数据源中的数据,对GridView控件感兴趣的小伙伴们可以参考一下
    2016-01-01
  • asp.net简化接收参数值的函数

    asp.net简化接收参数值的函数

    获取querystring 参数名
    2008-05-05
  • asp.net下无法循环绑定投票的标题和选项的解决方法

    asp.net下无法循环绑定投票的标题和选项的解决方法

    asp.net下无法循环绑定投票的标题和选项与无法循环获得用户的选择的解决方法。
    2010-12-12
  • LazyCaptcha自定义随机验证码和字体的示例详解

    LazyCaptcha自定义随机验证码和字体的示例详解

    LazyCaptcha是仿EasyCaptcha和SimpleCaptcha,基于.Net Standard 2.1的图形验证码模块,这篇文章主要介绍了LazyCaptcha自定义随机验证码和字体 ,需要的朋友可以参考下
    2022-03-03
  • .NET 6开发TodoList应用之实现接口请求验证

    .NET 6开发TodoList应用之实现接口请求验证

    在响应请求处理的过程中,我们经常需要对请求参数的合法性进行校验,如果参数不合法,将不继续进行业务逻辑的处理。本文将介绍如何使用FluentValidation和MediatR实现接口请求验证,需要的可以参考一下
    2021-12-12

最新评论