在.net core中,配置文件差不多都是json文件。我们在开发程序的时候,可以使用系统默认的appsettings.json,可以自定义json配置文件。当json配置文件里面的参数改变时,程序也会自动重新加载。

接下来我们需要演示的,就是这些相关的功能。

一、使用默认的appsettings.json配置文件

1、在配置文件中定义配置类:

2、在程序中新建一个ClientInfo类,对应这个配置类

3、在Startup.ConfigureServices方法中,加入如下代码:

4、在应用中使用

在应用中使用这些配置,有三种方式,一种是通过构造函数进行依赖注入,第二种是通过服务定位的方式,第三种是在视图中通过@inject注入的方式。

第一种,通过构造函数注入:

第二种,通过服务定位的方式(一般不推荐这种用法):

在使用这种方式的前提下,首先得在Startup类中配置IServiceProvider:

新建一个ServiceLocator类,用来存储IServiceProvider的实例。

在Startup.Configure方法中,配置IServiceProvider

通过服务定位的方式得到对应配置的实例:

第三种,在视图中通过@inject方式注入:

以上是针对单个配置类,如果是集合怎么办?如下图所示:

先建立针对集合中的单个类模型:

那我们在Startup.ConfigureService方法中,就应该像这样写:

在应用中,可以通过上面的那三种方式的任一一种来使用,诸如:

二、使用自定义的配置文件

系统默认的appsettings.json配置文件满足不了当前系统的需求,需要另起json配置文件,如下图:

则我们怎么才能将之里面的配置信息导入到程序应用中呢?见以下代码:

借助ConfigurationBuilder类来实现。使用这种方式的前提下,一定要找到我们自定义配置文件的路径。

三、改变配置文件中的参数,使的程序会自动重新加载配置

使用IOptions<T>这种方式注入不会产生这种效果,需使用IOptionsSnapshot<T>。

如下图所示:

使用IOptionsSnapshot<T>得到配置参数的这种方式,在外部配置文件的参数更改后,程序会重新自动加载该配置文件。

四、在应用中使用IConfiguration来得到json配置文件中的相关参数

我们可以在应用中直接通过IConfiguration来获取json配置文件中的相关参数,如下图所示。

在中括号里面的参数是有讲究的。如下面这个配置:

Client和Hosts都属于第一层每个配置的根节点名称,因此在写那个参数时,就需要以每个参数的第一层根节点开头。如果当前根节点对应的是一个对象,则可以通过英文冒号(:)跟进其下一层的节点名称,如Client:Id,这样就会找到Client对象的Id参数值。如果是集合数组,则需要找到集合数组中的这个类(或者元素)的索引下标,如果我想找Hosts集合中第一个类的Ip参数值,则可以这样写Hosts:0:Ip,这样就得到了192.168.1.1这参数值。

参考文章:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/configuration/options?view=aspnetcore-2.1

.net core json配置相关用法的更多相关文章

  1. Core Json 序列化相关问题

    //返回json  大小写 配置            services.AddMvc()                    .AddJsonOptions( op => op.Serial ...

  2. Jmeter测试http+JSON配置相关

    1.添加HTTP信息头管理器 Content-Type application/json Accept application/json 2.添加http请求(方法.编码.路径.body)

  3. .Net Core 实践 - 如何在控制台应用(.Net Core)使用appsettings.json配置

    新建控制台应用(.Net Core)程序 添加json文件,命名为appsettings.json,设置文件属性 如果较新则复制.添加内容如下 { "MyWords" : &quo ...

  4. 浅析 .Net Core中Json配置的自动更新

    Pre 很早在看 Jesse 的Asp.net Core快速入门的课程的时候就了解到了在Asp .net core中,如果添加的Json配置被更改了,是支持自动重载配置的,作为一名有着严重" ...

  5. nodeJs配置相关以及JSON.parse

    nodeJs配置相关 实际上说应用相关更好吧,我不是很懂. 今天在工作中,被同事解决了一个问题,虽然多花了一些额外时间,但长痛不如短痛嘛 实际上的问题就是npm run target等命令可以,但是n ...

  6. 第三节:EF Core上下文DbContext相关配置和生命周期

    一. 配置相关 1. 数据库连接字符串的写法 (1).账号密码:Server=localhost;Database=EFDB01;User ID=sa;Password=123456; (2).win ...

  7. ASP.NET Core的配置(5):配置的同步[设计篇]

    本节所谓的"配置同步"主要体现在两个方面:其一,如何监控配置源并在其变化的时候自动加载其数据,其目的是让应用中通过Configuration对象承载的配置与配置源的数据同步:其二. ...

  8. ASP.NET Core的配置(5):配置的同步[ 实例篇]

    ConfigurationBuilder在生成以Configuration对象的时候会利用注册其中的ConfigurationProvider加载原始的配置数据,那么一旦配置源中的数据发生变化,应用程 ...

  9. ASP.NET Core的配置(4):多样性的配置来源[下篇]

    我们在上篇和中篇对配置模型中默认提供的各种ConfigurationProvider进行了深入详尽的介绍,如果它们依然不能满足项目中的配置需求,我们可以还可以通过自定义ConfigurationPro ...

随机推荐

  1. 安卓自动化测试——rf

    ${a} Get Text //android.widget.TextView[contains(@text,"历史位置")]/../../../android.widget.Li ...

  2. U8800 手机恢复出厂设置出现轻触Android开始页面 处理办法

    U8800 恢复出厂设置出现轻触Android开始页面处理办法 问题现象 Huawei 手机U8800刷机后,点击恢复出厂默认设置后,出现了一个一直停留在“欢迎使用Android 轻触 Android ...

  3. R基本图形示例及代码(持续收集)

    分布图 hist(MetaData$genes, breaks = 100, main = "Gene number distribution", xlab = "Gen ...

  4. LeetCode--242--有效的字母异位词

    问题描述: 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词. 示例 1: 输入: s = "anagram", t = "nagara ...

  5. vue动画

    最近想搞搞vue的过渡和动画,以为照着官网写就好了,谁知道还是出现一些状况 具体表现就是不用webpack打包时候写的过渡是正常的,而用了webpack打包就不正常了 说使用了未定义的element: ...

  6. 使用jquery.mobile和WebSQL实现记事本功能

    1.记事本列表页 1.1.页面结构与样式: <div data-role="page" id="home"> <div data-role=& ...

  7. android -------- java虚拟机和Dalvik虚拟机

    java虚拟机 虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的.Java虚拟机有自己完善的硬体架构,如处理器.堆栈.寄存器等,还具有相应的指令系统.Java虚拟机屏蔽了 ...

  8. android -------- Eclipse选择NDK路径时 “Not a valid NDK directory”

    在 Eclipse选择NDK路径时 出现 “Not a valid NDK directory”  这样的错误 解决方式1 在你安装的ndk的主目录下创建一个ndk-build空文件,然后重新打开对话 ...

  9. eth

    今天说下Centos的eth0:0这个虚拟端口,应为学到ifcofig eth0:0 IP,可以给一个网卡设置俩个IP地址,但是只是临时设置,然而我想永久设置,所以就在网找,最终找到的方法是 可以先复 ...

  10. MyBatis动态sql之${}和#{}区别

    前言 ​ 接触mybatis也是在今年步入社会之后,想想也半年多了,缺没时间去系统的学习,只知道大概,也是惭愧. ​ 不知道有多少刚毕业的同学和我一样,到现在还没仔仔细细去了解你每天都会见到使用到的框 ...