本文要介紹 ASP.NET Core 專案的設定檔案,其與舊有的 ASP.NET 專案有很大的不同。最大的差異是改用了 JSON 格式,比舊有的 XML 格式體積更小、更容易閱讀。
設定檔案
可以透過 appsettings.json
檔案設定專案需要的設定值。以下是一個 appsettings.json
範例檔案:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AppSettings": {
"AppTitle": "MyApp",
"Environment": "Development",
"Version": "1.0"
}
}
可以使用以下的程式碼取得 appsettings.json
內的設定值:
public class Repository: IRepository
{
// 需要加入 using Microsoft.Extensions.Configuration;
private readonly IConfiguration Configuration;
// 注入 IConfiguration 類別
public Repository(IConfiguration configuration)
{
Configuration = configuration;
}
public void DoSomething()
{
var title = Configuration["AppSettings:AppTitle"];
var defaultLogLevel = Configuration["Logging:LogLevel:Default"];
}
}
也可以使用 builder.Configuration.AddJsonFile()
方法加入自訂的設定檔。
用 Secret Manager 儲存秘密設定
為了避免將機密簽入至版本控制系統,不能將帳號、密碼或是其它重要的資訊存放在 appsettings.json
內。可以建立 secrets.json
解決此問題。
在專案目錄下,使用命令列執行初始化和設定的指令,就會建立預設的 secrets.json
檔案,其效用和 appsettings.json
相同。需注意此檔案仍是使用明碼儲存資料,存放的密碼仍建議要先加密過。
dotnet user-secrets init
dotnet user-secrets set "userName" "lazy"
產生時會告知一組隨機的 user_secrets_id,預設會存放在 %APPDATA%\Microsoft\UserSecrets\<user_secrets_id>\secrets.json
內,可自行編輯。
存取順序
- secrets.json
- appsettings.{Environment}.json,例如 appsettings.Production.json
- appsettings.json
有重複的設定值時,優先使用數字較低的設定檔內的設定值。