ASP.NET Core读取配置文件

作者:痴者工良 时间:2024-06-05 09:31:52 

ASP.NET Core 中,可以使用 ConfigurationBuilder 对象来构建。

主要分为三部:配置数据源 -> ConfigurationBuilder -> 使用。

数据源可来自字典或配置文件。

数据源要么继承 IConfigurationSource ,要么从配置文件中读取。

1,来自字典

我们先使用字典存储键值对,来设置配置, test = 配置,然后使用 ConfigurationBuilder.Add() 方法添加数据源, Add 方法可以添加继承了 IConfigurationSource的数据源。

MemoryConfigurationSource 继承了 IConfigurationSource ,使用字典作为数据源。

var dic = new Dictionary<string, string>()
           {
               ["test"] = "配置"
           };
           var config = new ConfigurationBuilder()
               .Add(new MemoryConfigurationSource() { InitialData = dic }).Build();
           string test = config["test"];

老是 new 不太爽,可以使用下面的方法来读取字典中的数据源:

var dic = new Dictionary<string, string>()
           {
               ["test"] = "配置"
           };
           var config = new ConfigurationBuilder()
               .AddInMemoryCollection(dic)
               .Build();
           string test = config["test"];

2,来自配置文件

假如在 项目根目录下创建一个 json 文件,内容如下:

{
"test":"配置"
}

那么可以这样读取配置:

var config = new ConfigurationBuilder()
               .AddJsonFile("test.json")
               .Build();
           string test = config["test"];
           Console.WriteLine(test);

如果配置文件不在根目录下,则可以使用 SetBasePath() 来定义路径,示例如下:

var config = new ConfigurationBuilder()
               .SetBasePath("E:\\test\\aaa")
               .AddJsonFile("test.json")
               .Build();

上面看到,获取配置项是非常简单的, config["{KeyName}"] 即可获得 value

另外,可以监控 json 文件,当 json 文件发生更改时,主动更新。

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

3,层次结构

配置数据源可以有层次结构。

ASP.NET Core 中,都会有个 appsettings.json 文件,其内容如下:

{
 "Logging": {
   "LogLevel": {
     "Default": "Information",
     "Microsoft": "Warning",
     "Microsoft.Hosting.Lifetime": "Information"
   }
 }
}

那么我们使用时,可以使用 : 符号获取下一层子项的配置。

var config = new ConfigurationBuilder()
               .AddJsonFile("appsettings.json")
               .Build();

string test = config["Logging:LogLevel:Default"];

如果你只想 获取 json 文件中 LogLevel 部分的配置,可以使用 GetSection() 方法。

var config = new ConfigurationBuilder()
               .AddJsonFile("appsettings.json")
               .Build()
               .GetSection("Logging:LogLevel");

string test = config["Default"];

通过 json 配置文件,我们可以很方便地构建层级结构的配置,如果想在字典中存储,可以使用 "{k1}:{k2}" 这种形式存。例如:

var dic = new Dictionary<string, string>()
           {
               ["testParent:Child1"] = "6",
               ["testParent:Child2"] = "666"
           };
           var config = new ConfigurationBuilder()
               .AddInMemoryCollection(dic)
               .Build().GetSection("testParent");

string test = config["Child1"];

4,映射

我们可以使用 Get<>() 方法,将配置映射为对象。

public class TestOptions
   {
       public string A { get; set; }
       public string B { get; set; }
       public string C { get; set; }
   }
var dic = new Dictionary<string, string>()
           {
               ["A"] = "6",
               ["B"] = "66",
               ["C"] = "666"
           };
           TestOptions config = new ConfigurationBuilder()
               .AddInMemoryCollection(dic)
               .Build().Get<TestOptions>();

来源:https://www.cnblogs.com/whuanle/p/13061059.html

标签:ASP.NET,Core,读取,配置,文件
0
投稿

猜你喜欢

  • VSCODE添加open with code实现右键打开文件夹

    2022-02-06 05:09:43
  • 详解Vue.use自定义自己的全局组件

    2024-05-02 17:02:59
  • sql server 编译与重编译详解

    2024-01-14 11:02:59
  • 详解Python中常用的图片处理函数的使用

    2021-05-05 18:30:32
  • 磁盘缓存专题之一 缓存命中和缓存未命中&缓存与缓冲间的差异

    2012-10-07 11:02:46
  • Pytorch 使用不同版本的cuda的方法步骤

    2023-02-06 07:52:23
  • MySQL数据库中的各种乱码及其解决方法

    2008-12-17 16:29:00
  • 用Python监控NASA TV直播画面的实现步骤

    2022-09-15 21:54:15
  • HTML5 移动页面自适应手机屏幕宽度详解

    2022-08-14 23:14:43
  • Python中3种内建数据结构:列表、元组和字典

    2022-12-20 03:46:04
  • tensorflow TFRecords文件的生成和读取的方法

    2022-04-04 23:21:05
  • 太有才了!让人称绝的404错误页面

    2007-08-19 15:51:00
  • 运用Python巧妙处理Word文档的方法详解

    2023-11-13 16:58:29
  • MySQL鲜为人知的几个特殊技巧

    2009-03-09 13:22:00
  • 一文带你了解MySQL中触发器的操作

    2024-01-13 13:22:11
  • nodejs使用socket5进行代理请求的实现

    2024-05-09 14:49:44
  • BootstrapTable+KnockoutJS相结合实现增删改查解决方案(三)两个Viewmodel搞定增删改查

    2024-04-28 09:36:56
  • 6行的js上下滑动广告效果

    2008-11-27 12:26:00
  • Python3 Random模块代码详解

    2023-04-11 01:36:20
  • python实现C4.5决策树算法

    2021-10-05 19:35:29
  • asp之家 网络编程 m.aspxhome.com