Azure 上有個應用程式組態的功能,可以建立多組”設定檔”,這對於網站要切換到本機開發或 UAT 或者是正式環境都很方便,下面就示範如何使用。

最一開始當然是在應用程式組態中新增一組”設定”,它是 Key Value 的對應,為了方便展示,在設定裡新增 key: API_DOMAIN、value: www.google.com。

接在從 nuget 中加入Microsoft.Extensions.Configuration.AzureAppConfiguration套件。

接著新增類別,用來連接 Azure 及取得設定:

public interface IConfigManager
{
    string GetString(string key);
}

public class ConfigManager : IConfigManager
{
    private readonly IConfiguration _configuration;
    private readonly IConfigurationRoot _azureConfig;
    public ConfigManager(IConfiguration configuration)
    {
        _configuration = configuration;
        var builder = new ConfigurationBuilder();
        string connectionStr = _configuration["AzureConfig:connectionStr"];
        builder.AddAzureAppConfiguration(connectionStr);
        _azureConfig = builder.Build();
    }

    public string GetString(string key)
    {
        string value = string.Empty;
        value = _azureConfig[key];

        return value;
    }
}

因為需要連接 Azure 的連線字串,所以在 appsettings.json 中新增連線字串:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "AzureConfig": {
    "connectionStr": "<your connection string>"
  }
}

然後記得設定 DI:builder.Services.AddTransient<IConfigManager, ConfigManager>(x => new ConfigManager(builder.Configuration));

最後在 controller 上測試:

public IActionResult GetValue() 
{
    string key = "API_DOMAIN";
    string value = _configManager.GetString(key);
    return Content(value);
}

收工。

參考資料