iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >ASP.NET Core选项接口介绍
  • 359
分享到

ASP.NET Core选项接口介绍

2024-04-02 19:04:59 359人浏览 安东尼
摘要

首先要了解 ASP.net core 中的配置,请点击这里了解:https://www.jb51.net/article/238451.htm 1,选项接口 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选项接口的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: ASP.NET Core选项接口介绍

本文链接: https://www.lsjlt.com/news/140122.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • ASP.NET Core选项接口介绍
    首先要了解 ASP.NET Core 中的配置,请点击这里了解:https://www.jb51.net/article/238451.htm 1,选项接口 ASP.NET Core...
    99+
    2022-11-13
  • ASP.NET Core之Web API介绍
    目录1.简单介绍2.自定义格式化(Format)1.特定格式的操作结果2.配置格式化程序3.添加对 XML 格式的支持4.强制特定格式化5.响应格式 URL 映射6.自定义格式化程序...
    99+
    2022-11-13
  • ASP.NET Core中的Razor页面介绍
    目录简介Why?创建Razor页面应用程序ASP.NET Core Razor页面 - 核心功能模型绑定HandlersTag Helpers and HTML Helpers路由总...
    99+
    2022-11-13
  • ASP.NET Core Razor页面用法介绍
    简介 随着ASP.NET Core 2 即将来临,最热门的新事物是Razor页面。在之前的一篇文章中,我们简要介绍了ASP.NET Core Razor 页面。 Razor页面是AS...
    99+
    2022-11-13
  • ASP.NET Core中的Blazor组件介绍
    目录关于组件组件类静态资产路由与路由参数组件参数请勿创建会写入其自己的组参数属性的组件子内容属性展开任意参数捕获对组件的引用在外部调用组件方法以更新状态使用 @ 键控制是否保留元素和...
    99+
    2022-11-13
  • ASP.NET Core中的Ocelot网关介绍
    目录1.简介2.Ocelot配置2.1基础集成(Basic Implementation)2.2集成IdentityServer(With IdentityServer)2.3多个网...
    99+
    2022-11-13
  • Asp.net core前端框架Blazor介绍
    一、Blazor介绍 Blazor是微软在Asp.net core 3.0中推出的一个前端MVVM模型,它可以利用Razor页面引擎和C#作为脚本语言来构建WEB页面. 在.Net5...
    99+
    2022-11-13
  • ASP.NET Core命名空间System.Text.Encodings.Web介绍
    System.Text.Encodings.Web 空间包含表示 Web 编码器的基类、表示 HTML、JavaScript 和 Url 字符编码的子类,以及表示仅允许编码特定字符、...
    99+
    2022-11-12
  • ASP.NET Core的日志系统介绍
    .net core是内置了日志系统的,本文这里简单的介绍一下它的基本用法。如下是一个简单的示例:  var service = new ServiceCollection(...
    99+
    2022-11-13
  • ASP.NET Core MVC中Tag Helpers用法介绍
    简介 Tag Helpers 提供了在视图中更改和增强现有HTML元素的功能。将它们添加到视图中,会经过Razor模板引擎处理并创建一个HTML,之后再返回给浏览器。有一些Tag H...
    99+
    2022-11-13
  • ASP.NET Core扩展库ServiceStack.Redis用法介绍
    给大家安利一款 ServiceStack.Redis 的 ASP.NET Core 扩展库,它是基于 ServiceStack.Redis.Core 开发的。 简...
    99+
    2022-11-13
  • 创建ASP.NET Core Web应用程序并介绍项目模板
    目录创建ASP.NET Web 应用程序运行ASP.NET Core Web 应用程序:ASP.NET Core应用程序模板空APIWeb应用程序模板Web应用程序(模型视图-控制器...
    99+
    2022-11-13
  • ASP.NET Core的中间件与管道介绍
    今天来讨论一个ASP.NET Core 很重要概念管道和中间件,在ASP.NET Core中,针对HTTP请求采用pipeline也就是通常说的管道方式来处理,而管道容器内可以挂载很...
    99+
    2022-11-12
  • ASP.NET Core MVC中Form Tag Helpers用法介绍
    简介 我们已经介绍过Tag Helpers以及一些最常用的Tag Helpers,也谈到了缓存Tag Helpers。在这篇文章中,我们将讨论表单Tag Helpers。 HTML或...
    99+
    2022-11-13
  • ASP.NET Core扩展库的相关功能介绍
    目录简介日志扩展轻量级实体映射AspNetCore Http服务端的扩展HttpClient扩展令牌提供器并行队列处理亲爱的.Neter们,在我们日复一日的编码过程中是不是会遇到一些...
    99+
    2022-11-11
  • ASP.NET Core MVC自定义Tag Helpers用法介绍
    介绍 在之前的内容中,我们谈到了Tag Helpers,我们还谈到了 caching Tag Helpers和form Tag Helpers。 通过创建自定义Tag He...
    99+
    2022-11-13
  • ASP.NET Core中Razor页面与MVC区别介绍
    作为.NET Core 2.0发行版的一部分,还有一些ASP.NET的更新。其中之一是添加了一个新的Web框架来创建“页面”,而不需要复杂的ASP.NET M...
    99+
    2022-11-13
  • TypeScript接口介绍
    目录1.接口的定义 2.属性 2.1可选属性 2.2只读属性 3.类类型 3.1继承接口 4.函数类型 前言: TS的核心原则之一就是对所具有的结构 进行类型检查。接口的作用就是为...
    99+
    2022-11-12
  • ASP.NET MVC项目部署方式介绍
    目录一、直接用源代码部署1、新建网站2、配置添加网站3、浏览二、使用发布文件部署1、发布文件2、部署ASP.NET MVC编写的程序需要部署到IIS上面才能进行访问,部署方式分为两种...
    99+
    2022-11-13
  • ASP.NET Core MVC中Required与BindRequired用法与区别介绍
    在开发ASP.NET Core MVC应用程序时,需要对控制器中的模型校验数据有效性,元数据注释(Data Annotations)是一个完美的解决方案。 元数据注释最典型例子是确保...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作