您现在的位置是:网站首页> 编程资料编程资料

ASP.NET Core选项接口介绍_实用技巧_

2023-05-24 425人已围观

简介 ASP.NET Core选项接口介绍_实用技巧_

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

1,选项接口

ASP.NET Core 中的选项接口,一共有三个,分别是:

  • IOptions
  • IOptionsSnapshot
  • IOptionsMonitor

这三种方式都可以获取到配置,区别在于生命周期和文件监控等。

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(new ConfigurationBuilder().AddJsonFile("test.json").Build());

这样就可以自动注入配置服务了。那么我们如何接收这个配置呢?
我们可以先使用 IOptions 来接收。

添加一个控制器,名字随意,其内容如下:

 public class TestController : ControllerBase { private readonly TestModel _options; public TestController(IOptions options) { _options = options.Value; } }

这样就可以接收接入的配置了。

这就是 IOptions 的使用。

IOptions 有以下特征:

不支持:

  • 在应用启动后读取配置数据。
  • 命名选项

可以:

  • 注册为单一实例且可以注入到任何服务生存期。

也就是说,在应用启动前就已经读取配置文件生成对象(单一实例)。当然,后续如果修改了配置文件(.json),也不会影响这个对象的。

3,IOptionsSnapshot

文档解释:通过使用 IOptionsSnapshot,针对请求生存期访问和缓存选项时,每个请求都会计算一次选项。

IOptionsSnapshot 的生命作用域是 scoped ,在一个请求周期内有效。

其它不变,使用时:

 private readonly TestModel _options; public TestController(IOptionsSnapshot options) { _options = options.Value; }

由于 IOptionsSnapshot 每次请求都会进行更新,因此配置文件变更后,可以及时获得更新。

IOptionsMonitor 则略有不同:

 public class TestController : ControllerBase { private readonly IOptionsMonitor _options; public TestController(IOptionsMonitor options) { _options = options; } [HttpGet("T")] public ContentResult T() { return new ContentResult() { Content = _options.CurrentValue.Title }; } }

IOptionsSnapshot 和 IOptionsMonitor 都可以检测到配置文件的更改,但是 IOptionsSnapshot 每次请求都是一个新的对象,而 IOptionsMonitor 是单例模式。

到此这篇关于ASP.NET Core选项接口的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。

-六神源码网