當前位置: 妍妍網 > 碼農

ASP.NET Core 中利用環境變量動態載入多個 appsettings.json 檔

2024-02-24碼農

在 ASP.NET Core 計畫中, appsettings.json 檔通常用於儲存配置資訊,如資料庫連線字串、API 金鑰等。然而,根據不同的環境(如開發環境、測試環境、生產環境),這些配置資訊可能會有所不同。ASP.NET Core 提供了靈活的方式來支持多個配置檔,並可以根據環境變量動態載入不同的配置。本文將介紹如何在 ASP.NET Core 計畫中實作這一功能。

一、appsettings.json 檔管理

首先,你需要為每個環境準備相應的 appsettings.json 檔。這些檔通常被命名為 appsettings.Development.json appsettings.Staging.json appsettings.Production.json 等,分別對應不同的環境。每個檔中包含特定於該環境的配置資訊。

二、使用環境變量指定配置檔

ASP.NET Core 透過環境變量 ASPNETCORE_ENVIRONMENT 來確定當前執行環境。你可以在計畫啟動時設定這個環境變量,以指示 ASP.NET Core 載入哪個配置檔。

例如,在開發環境中,你可以將 ASPNETCORE_ENVIRONMENT 設定為 Development ,這樣 ASP.NET Core 就會載入 appsettings.Development.json 檔中的配置。

三、合並配置資訊

ASP.NET Core 支持將多個配置源合並到一個配置物件中。這意味著,你可以有一個基本的 appsettings.json 檔包含所有環境共通的配置資訊,然後為每個環境建立特定的配置檔來覆蓋或添加特定於該環境的配置。

例如,你可能有一個基本的 appsettings.json 檔包含資料庫連線字串和 API 金鑰,然後有一個 appsettings.Development.json 檔只包含開發環境中特定的配置,如日誌級別等。

四、使用 IConfiguration 介面存取配置資訊

在 ASP.NET Core 中,你可以透過依賴註入獲取 IConfiguration 介面的例項,然後使用它來存取配置資訊。 IConfiguration 提供了靈活的方式來讀取配置資訊,支持按鍵名直接存取,也支持使用路徑來存取巢狀的配置資訊。

五、範例程式碼

下面是一個簡單的範例程式碼,展示了如何在 ASP.NET Core 計畫中根據環境變量動態載入多個 appsettings.json 檔:

public classStartup
{
publicStartup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// 這個方法被執行時呼叫,使用此方法來添加服務到容器。
publicvoidConfigureServices(IServiceCollection services)
{
// 使用配置資訊配置服務
var connectionString = Configuration.GetConnectionString("DefaultConnection");
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(connectionString));
}
// 這個方法被執行時呼叫,使用此方法來配置 HTTP 請求管道。
publicvoidConfigure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/"async context =>
{
await context.Response.WriteAsync(Configuration["Greeting"]);
});
});
}
}



在上述範例中, Startup 類透過建構函式註入了 IConfiguration 例項,並在 ConfigureServices Configure 方法中使用了它來讀取配置資訊。 IWebHostEnvironment 介面用於檢測當前是否處於開發環境,並在開發環境中啟用異常頁面。

六、總結

透過結合環境變量和多個 appsettings.json 檔,ASP.NET Core 提供了靈活的方式來管理不同環境下的配置資訊。這種方式使得在不同環境中部署和維護應用程式變得更加容易和高效。