在。NET Core中配置系統的可選方式比在傳統的。NET Framework下更多,主要包括:
(1) 記憶體資料
(2) JSON資料方式
(3) XML資料方式
(4) 環境變數方式
(5) 命令引數方式
在實際開發中,程式部署執行後,如果修改配置檔案,是需要配置檔案的動態熱載入,也會在這裡進行簡單介紹。
透過NuGet包管理器,為專案新增如下程式集資訊:
Microsoft。Extensions。Configuration
Microsoft。Extensions。Configuration。CommandLine
Microsoft。Extensions。Configuration。EnvironmentVariables
Microsoft。Extensions。Configuration。Json
Microsoft。Extensions。Configuration。Xml
一、記憶體資料方式
此方式是預設支援的方式,我們透過程式程式碼建立
IEnumerable
的變數,並在程式程式碼中進行呼叫;
//1。記憶體資料
var
initialData = new
List<KeyValuePair<string, string>>
();
initialData。Add(new KeyValuePair
initialData。Add(new KeyValuePair
initialData。Add(new KeyValuePair
IConfiguration config =
new ConfigurationBuilder()。SetBasePath(Environment。CurrentDirectory) 。
AddInMemoryCollection
(initialData) 。Build();
Console。WriteLine(“InMemory Way:”+config[“P2”]);
二、JSON資料方式
在專案根目錄下建立一個appsettings。json檔案,透過檔案屬性設定“複製到輸出目錄”值為“始終複製”,如下圖所示:
透過程式碼進行呼叫
IConfiguration config =
new ConfigurationBuilder()。SetBasePath(Environment。CurrentDirectory)
。
AddJsonFile
(“appsettings。json”)。Build();
Console。WriteLine(“JSON Way:” + config[“P3”]);
三、XML資料方式
在專案根目錄下建立一個appsettings。xml檔案,透過檔案屬性設定“複製到輸出目錄”值為“始終複製”,如下圖所示:
透過程式碼進行呼叫
IConfiguration config =
new ConfigurationBuilder()。SetBasePath(Environment。CurrentDirectory)
。
AddXmlFile
(“appsettings。xml”) 。Build();
Console。WriteLine(“XML Way:” + config[“P1”]);
四、環境變數方式
設定環境變數ASPNETCORE_ENVIRONMENT值為test,如下圖所示:
專案根目錄下建立一個appsettings-test。json檔案,內容如下圖所示:
透過檔案屬性設定“複製到輸出目錄”值為“始終複製”,如下圖所示:
透過程式碼進行呼叫
IConfiguration config =
new ConfigurationBuilder()。SetBasePath(Environment。CurrentDirectory)
。AddJsonFile(“appsettings-” +
Environment.GetEnvironmentVariable
(“ASPNETCORE_ENVIRONMENT”)+ “。json”)。
AddEnvironmentVariables
() 。Build();
Console。WriteLine(“Environment Variables:” + Environment。GetEnvironmentVariable(“ASPNETCORE_ENVIRONMENT”));Console。WriteLine(“Environment Variables Way:” + config[“datasource:host”]);
五、命令列方式
程式碼呼叫
IConfiguration config =
new ConfigurationBuilder()。SetBasePath(Environment。CurrentDirectory)
。
AddCommandLine
(args) 。Build();
Console。WriteLine(“CommandLine Way:” + config[“P1”]);
執行時,透過dotnet命令並帶上引數,輸出結果如下圖所示:
六、配置檔案熱載入
//熱載入方式,AddJsonFile的第三個引數
IConfiguration config =
new ConfigurationBuilder()。SetBasePath(Environment。CurrentDirectory)
。AddJsonFile(“appsettings-test。json”, false,
true
)。Build();
while (true)
{
Console。WriteLine(config[“
datasource:host
”]);
Thread。Sleep(1000);
}
Microsoft。Extensions。Configuration
Microsoft。Extensions。Configuration
在持續讀取配置檔案並輸出引數值過程中,開啟配置檔案,修改host地址,然後也會輸出修改後的值。