.Net core下的配置設定(一)——Configuration
ASP.NET Core 中提供了一個Configuration 包,用以應用配置基於配置提供程式建立的鍵值對。這裡以json檔案配置的方式,簡單的介紹一下它的用法。
首先定義一個配置檔案appsettings.json:
{
"
key1
"
:
"value1"
,
"
key2
"
: -1,
"
subsection
"
: {
"
key1
"
:
"value2"
,
"
key2
"
: -5
}
}
如下是基本的用法:
var configBuilder = new ConfigurationBuilder().AddJsonFile("appsettings.json"); var config= configBuilder.Build(); var value1 = config.GetValue<string>("key1"); var value2 = config.GetValue<int>("key2");
.net core將配置操作分佈在ConfigurationBuilder和IConfigurationRoot兩個物件了,其中ConfigurationBuilder用來配置資料來源,IConfigurationRoot則提供統一的讀取操作。
資料來源:
配置提供程式將配置資料從各種配置源讀取到鍵值對,它支援的配置方式比較多,常見的就有:
-
命令列引數
-
環境變數
-
記憶體中的 .NET 物件
-
設定檔案(Ini、 xm、,Json)
-
自定義提供程式
基本上常用的配置資料來源都支援了,支援多資料來源配置,也支援自定義資料來源,非常靈活而方便。具體的配置方式可以參考官方文件ASP.NET Core 中的配置 。
CreateDefaultBuilder
為了簡化配置,Asp.net core中提供了一個函式CreateDefaultBuilder隱式提供了對ConfigurationBuilder的呼叫,順序提供了對如下配置檔案的配置載入:
-
appsettings.json。
-
appsettings.{Environment}.json。
-
應用在使用入口程式集的 Development 環境中執行時的機密管理器。
-
環境變數。
-
命令列引數
更多細節可以參考官方文件:設定主機
讀取配置
前面的例子中演示了基本的讀取方式:
var value1 = config.GetValue<string>("key1"); var value2 = config.GetValue<int>("key2");
除了這種方式外,也可以通過Bind方法按照物件的方式讀取:
class ConfigData { public string Key1 { get; set; } public int Key2 { get; set; } } var cfgData = new ConfigData(); config.Bind(cfgData);
另外,對於子節點的配置,也可以通過GetSection函式定位到子節點,然後按照前面的方式讀取,例如:
var value1 = config.GetSection("subsection").GetValue<string>("key1"); var cfgData = config.GetSection("subsection").Get<ConfigData>();