.net core使用配置文件

  • 2019 年 10 月 6 日
  • 筆記

.net core使用配置文件

在 .net core中,配置文件的讀取是通過IConfiguration來提供的,程式集是Microsoft.Extensions.Configuration,對應的有一系列的實現,通過這些實現,可以讀取Json/Xml/ini等類型的配置文件。

在本節示例中,我們使用Json配置文件做演示。

讀取Json配置文件

Json是我們常用的配置文件格式,可以非常直觀的體現配置文件的層級結構。

新建一個 .net core 控制台應用程式,並為項目添加appsettings.json文件,文件內容如下:

{    "Name": "Jerry",    "option1": "value1_from_json",    "option2": 2,      "subsection": {      "suboption1": "subvalue1_from_json"    },    "wizards": [      {        "Name": "Gandalf",        "Age": "1000"      },      {        "Name": "Harry",        "Age": "17"      }    ]  }

添加Microsoft.Extensions.Configuration.Json引用,隨後使用下面的程式碼創建IConfiguartion對象:

public static IConfiguration Configuration { get; set; }    //構建Configuration  var builder = new ConfigurationBuilder()      .SetBasePath(AppDomain.CurrentDomain.BaseDirectory)      .AddJsonFile("appsettings.json");    Configuration = builder.Build();

使用IConfiguartion對象獲取配置資訊:

static void ReadConfiguration()  {      Console.WriteLine($"Name = {Configuration["Name"]}");      Console.WriteLine($"option1 = {Configuration["Option1"]}");      Console.WriteLine($"option2 = {Configuration["option2"]}");      Console.WriteLine($"suboption1 = {Configuration["subsection:suboption1"]}");      Console.WriteLine();        Console.WriteLine("Wizards:");      Console.Write($"{Configuration["wizards:0:Name"]}, ");      Console.WriteLine($"age {Configuration["wizards:0:Age"]}");      Console.Write($"{Configuration["wizards:1:Name"]}, ");      Console.WriteLine($"age {Configuration["wizards:1:Age"]}");      Console.WriteLine();        Console.WriteLine("Press a key...");      Console.ReadKey();  }

使用強類型讀取配置資訊:

static void ConvertConfiguration()  {      //讀取整個配置文件      var appSettings = Configuration.Get<AppSettings>();      Console.WriteLine("AppSettings = ");      Console.WriteLine(JsonConvert.SerializeObject(appSettings, Formatting.Indented));        //讀取某個節點      IList<Wizard> wizards = Configuration.GetSection("wizards").Get<IList<Wizard>>();      Console.WriteLine("wizards = ");      Console.WriteLine(JsonConvert.SerializeObject(wizards, Formatting.Indented));        Console.WriteLine("Press a key...");      Console.ReadKey();  }

== 注意:在1.0版本中使用Bind方法轉換,2.0以後可以使用Get方法更加方便的獲取強類型文件 ==

== 注意:當使用多個配置文件,且配置文件中包含相同的鍵時,後添加的配置文件中的鍵值將覆蓋先添加的鍵值 ==

其它類型的配置文件使用方法相似,不再贅述。

參考文檔:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/startup?view=aspnetcore-2.1