Published on

ASP.NET Core 預設組態設定

ASP.NET Core 裡面有很多方式都可以當成組態設定,我們來看一下預設有提供那些方式可以使用

ASP.NET Core 2.2

設定檔的種類

  • 在 ASP.NET Core 裡面預設有四種組態設定的方式
    • appsettings.json
      • appsettings.XXX.json
    • User Secrets
    • Environment Variables
    • Command Line

預設的意思指的是,在不修改程式碼,增加任何組態設定的擴充,建立完專案就可以使用的

載入順序

  • 程式碼載入的順序就是上面我所列的順序,而後面的設定會蓋掉前面的設定,也就是說如果都有同樣的設定,愈後面的優先程級會愈高

  • 裡面比較特別的是 User Secrets,它只存在 ASPNETCORE_ENVIRONMENTDevelopement 的環境,之前有一篇文章在講怎麼使用,如果有興趣的可以去看看

  • Github 原始碼 在此,可以看一下

測試

  • appsettings.json 設定為
{
  "Setting": "From appsettings"
}
  • appsettings.Development.json 設定為
{
  "Setting": "From appsettings.Development"
}
  • User Secrets 設定為

  • Environment Variables 的話,比較簡單的作法是修改專案檔下面的 launchSettings.json,在 environmentVariables 的地方,多加一個設定
{
  "profiles": {
    "mvc": {
      "commandName": "Project",
      "launchBrowser": true,
      "applicationUrl": "http://localhost:6543",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "Setting": "From environment"
      }
    }
  }
}
  • CLI 的話,比較簡單的作法也是改 launchSettings.json,多加一個 commandLineArgs
{
  "profiles": {
    "mvc": {
      "commandName": "Project",
      "commandLineArgs": "--Setting \"From Cli\"",
      "launchBrowser": true,
      "applicationUrl": "http://localhost:6543",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "Setting": "From environment"
      }
    }
  }
}
  • 如果用 CLI 執行的話,可以把參數放在後面
dotnet run --Setting "From Cli"
  • 每一個都設定的話,執行結果就是

  • 有興趣的可以一層一層拿掉,看一下執行的結果

後記

  • 雖然預設只有四種,其實 ASP.NET Core 提供了很多的擴充方式,如果有興趣的話可以看一下官方的說明
  • ASP.NET Core 雖然提供了很多的方式可以讓我們來設定,不過如果不了解先後順序的話,很可能會發生奇怪的 Bug
  • 有時間的話還是要看一下原始碼,會對整個程式的結構有所了解