zoukankan      html  css  js  c++  java
  • .NET Core开发实战(第11课:文件配置提供程序)--学习笔记

    11 | 文件配置提供程序:自由选择配置的格式

    文件配置提供程序

    • Microsoft.Extensions.Configuration.Ini
    • Microsoft.Extensions.Configuration.Json
    • Microsoft.Extensions.Configuration.NewtonsoftJson
    • Microsoft.Extensions.Configuration.Xml
    • Microsoft.Extensions.Configuration.UserSecrets

    这些都是读取不同文件的格式,或者从不同的位置来读取文件

    文件提供程序支持

    • 文件是否可选
    • 监视文件的变更

    下面通过代码来了解这些特性

    源码链接:
    https://github.com/witskeeper/geektime/tree/master/samples/ConfigurationFileDemo

    引用以下四个包:

    • Microsoft.Extensions.Configuration
    • Microsoft.Extensions.Configuration.Abstractions
    • Microsoft.Extensions.Configuration.Ini
    • Microsoft.Extensions.Configuration.Json

    读取 appsettings.json

    {
      "Key1": "Value1",
      "Key2": "Value2"
    }
    

    主程序

    var builder = new ConfigurationBuilder();
    builder.AddJsonFile("appsettings.json");
    var configurationRoot = builder.Build();
    
    Console.WriteLine($"Key1:{configurationRoot["Key1"]}");
    Console.WriteLine($"Key2:{configurationRoot["Key2"]}");
    Console.WriteLine($"Key3:{configurationRoot["Key3"]}");
    Console.ReadKey();
    

    启动程序,输出如下:

    Key1:Value1
    Key2:Value2
    Key3:
    

    Key3 不存在,所以他的值是空的

    文件是否可选是它的第二个参数 optional,默认情况下是 false

    builder.AddJsonFile("appsettings.json", optional:false);
    

    这意味当文件不存在的时候它会报错

    它的另一个参数是 reloadOnChange, 默认情况下是 true

    builder.AddJsonFile("appsettings.json", optional:false, reloadOnChange:true);
    

    这意味着每次文件变更,它会去读取新文件

    接下来看一下 appsettings.ini

    Key3=Value3 in ini
    

    主程序

    var builder = new ConfigurationBuilder();
    builder.AddJsonFile("appsettings.json", optional:false, reloadOnChange:true);
    builder.AddIniFile("appsettings.ini");
    var configurationRoot = builder.Build();
    
    Console.WriteLine($"Key1:{configurationRoot["Key1"]}");
    Console.WriteLine($"Key2:{configurationRoot["Key2"]}");
    Console.WriteLine($"Key3:{configurationRoot["Key3"]}");
    Console.ReadKey();
    

    启动程序,输出如下:

    Key1:Value1
    Key2:Value2
    Key3:Value3 in ini
    

    这里可以看到新添加的配置已经生效

    builder 中添加配置源是有顺序关系的,后添加的配置会覆盖先添加的配置

    知识共享许可协议

    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

    欢迎转载、使用、重新发布,但务必保留文章署名 郑子铭 (包含链接: http://www.cnblogs.com/MingsonZheng/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。

    如有任何疑问,请与我联系 (MingsonZheng@outlook.com) 。

  • 相关阅读:
    LeetCode(274)H-Index
    LeetCode(279)Perfect Squares
    LeetCode(278)First Bad Version
    LeetCode(289)Game of Life
    LeetCode(292) Nim Game
    LeetCode(282) Peeking Iterator
    解决Secure Shell Client(SSH)客户端中文乱码的方法
    Mysql 或者当前时间戳
    java http请求url报错505,但是浏览器可以正常返回json数据
    查询直播流实时帧率和码率 签名
  • 原文地址:https://www.cnblogs.com/MingsonZheng/p/12375425.html
Copyright © 2011-2022 走看看