.net core使用配置檔案

齊大飛發表於2018-08-05

.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

相關文章