3

我一直在玩一些Azure App Configuration

这是一个示例配置:

var environmentVariable = Environment.GetEnvironmentVariable("AppConfigurationConnectionString");
var config =
    new ConfigurationBuilder()
        .AddAzureAppConfiguration(options =>
        {
            options.Connect(environmentVariable)
                .ConfigureKeyVault(kv =>
                {
                    kv.SetCredential(new DefaultAzureCredential());
                });
        })
        .Build();

services.AddSingleton<IConfiguration>(config);

在此之后,我可以将一个IConfiguration实例注入我的服务并用于_config["settingName"]访问配置设置。这一切都很好,真的很好。

我不知道该怎么做的一件事是将相关设置组映射到强类型对象(也就是说,不必手动完成所有操作,我可以这样做,但是......希望有更好的方法) .

在常规的 ASP.NET 核心配置中,我可以将相关设置设置分组如下(即在 中appsettings.json

{
    "test": {
        "key1": "value1",
        "key2": "value2"
    }
}

使用 IOptions 模式如下:

services.Configure<Test>(config.GetSection("test"));

这允许我将强类型IOptions<Test>实例注入到我的类中。IMO 这比我_config["key1"]用来获取配置设置的大型平面索引器要好一些。

Azure App Configruation 是否有一种方法可以让我自动配置可以注入到我的类中的强类型配置对象?

TIA

4

1 回答 1

6

.NET Core 在将 appsettings.json 中的对象导入 IConfiguration 时将其展平。例如,您的测试对象在 IConfiguration 中变为以下两个键

_config["test:key1"]

_config["test:key2"]

这意味着您可以通过以这种扁平化方式存储设置来完全使用 Azure 应用程序配置来完成您想要的工作。Azure 门户中的 Azure 应用程序配置 UI 有一个导入实用程序,可让您导入 appsettings.json 文件,它会为您执行此导入操作。

以下是正在使用的导入实用程序的示例: 在此处输入图像描述

在此处输入图像描述

在 Azure 应用程序配置中拥有展平对象后,您拥有的确切代码将起作用。

于 2020-04-16T15:41:27.730 回答