1. 程式人生 > >Asp.Net Core 輕鬆學-玩轉配置檔案

Asp.Net Core 輕鬆學-玩轉配置檔案

原文: Asp.Net Core 輕鬆學-玩轉配置檔案

前言

    在 .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

結語

  • 通過本文,我們學習到了以下內容
1. 知道了appsettings.json 的作用,以及如何從配置檔案中讀取專案配置節點
2. 如何通過 IConfiguration 把配置節點轉換為實體物件
3. 使用 hosting.json 使程式運行於多個自定義埠
  • 努力為開源社群作貢獻,推薦一個自己開發的基於 .netcore+pgsql 的快速開發腳手架,內建 ORM框架,github地址:https://github.com/lianggx/mystaging
  • 文中如有疏漏之處,歡迎指正。