前言
在 .NET Core 項目中,配置文件有着舉足輕重的地位;與.NetFramework 不同的是,.NET Core 的配置文件都以 .json 結尾,這表示一個標准的 json 格式的文件;一個標准的 Asp.Net Core MVC 項目,一定帶着一個 appsettings.json 文件,該文件便是項目默認配置文件,這和基於 .NetFramework 創建的 Asp.Net Web Application (默認配置名稱:App.config) 有着根本的不同,今天我們就學習如何添加自定義配置到文件中,並把該配置在程序中讀取出來;然后再通過使用 host.json 這個配置文件使程序運行於多個端口。
1. appsettings.json 文件
1.1 appsettings.json 文件是一個標准的 json 結構的文件,這表示你只要按照 json 的結構寫入該文件,無論什么內容,都能在程序中自動讀取,當我們創建好 MVC 項目后,系統就自動幫我們創建好 appsettings.json 文件,其默認內容如下:
{
"Logging": { "LogLevel": { "Default": "Warning" } }, "AllowedHosts": "*" }
1.2 下面我們加一個配置節點 "book":"博客園精華文章選集"
{
"Logging": { "LogLevel": { "Default": "Warning" } }, "AllowedHosts": "*", "book":"博客園精華文章選集" }
1.3 在控制器 Controllers/HomeController.cs 中將該節點內容設置為網頁標題輸出,記得引用命名空間
using Microsoft.Extensions.Configuration;
在 Index 方法中加入參數 IConfiguration,如下
public IActionResult Index([FromServices]IConfiguration cfg) { return View(); }
1.4 輸入命令 dotnet run 啟動項目,結果如下,讀取自定義配置成功
1.5 將配置文件節點轉換為實體類
- 我們常常有這樣的需求,在配置文件中做了一堆配置,但是又不想逐個讀取,太麻煩,如果能轉換為實體類就好了,其實 IConfiguration 就自帶了該天賦,看下面的配置
{
"Logging": { "LogLevel": { "Default": "Warning" } }, "AllowedHosts": "*", "book":"博客園精華文章選集", "customer":{ "name":"ron.liang", "gender":"man", "job":"coder" } }
- 定義實體類
public class Customer{ public string Name { get; set; } public string Gender{get;set;} public string Job{get;set;} }
- 轉換為實體類,可以看到,已經轉換成功,對象屬性都已獲得了值
另類方式使用 hosting.json 使程序運行於多個端口
2.1 定義 hosting.json 文件
- 在實際的開發中,程序運行必需定義清晰的端口,不能使用隨機模式,這個時候,我們可以利用 hosting.json 文件來定義,無論程序發布到何處,永遠以該文件定義的端口來運行,首先在項目根目錄下創建一個 hosting.json 文件,並填入以下內容。
{
"server.urls": "http://0.0.0.0:12006;http://0.0.0.0:12007" }
2.2 修改 Program.cs 方法
public static IWebHostBuilder CreateWebHostBuilder(string[] args) { var hostConfiguration = new ConfigurationBuilder().AddJsonFile("hosting.json").Build(); return WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .UseConfiguration(hostConfiguration); }
- 以上方法將剛才創建的 hosting.json 加入配置中,並指定程序啟動使用該配置文件
2.2 刪除 Properties 目錄下的 launchSettings.json 文件
2.3 運行項目,可以看到,現在項目偵聽端口 12006/12007
結語
- 通過本文,我們學習到了以下內容