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"]構成設定にアクセスするために使用できます。これはすべてうまく機能し、非常に優れています。

私が行う方法がわからないことの 1 つは、関連する設定のグループを強く型付けされたオブジェクトにマップすることです (つまり、すべて手動で行う必要はありませんが、より良い方法があることを願っています)。 .

従来の ASP.NET コア構成では、関連する設定を次のようにグループ化できます (例: appsettings.json) 。

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

次のように IOptions パターンを使用します。

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

これにより、厳密に型指定されたIOptions<Test>インスタンスをクラスに挿入できます。_config["key1"]IMOこれは、構成設定を取得するために使用する大きなフラットインデクサーよりも少し優れています。

クラスに挿入できる厳密に型指定された構成オブジェクトを自動的に構成できるようにする Azure App Configruation のアプローチはありますか?

ティア

4

1 に答える 1

6

.NET Core は、appsettings.json 内のオブジェクトを IConfiguration にインポートするときにフラット化します。たとえば、テストオブジェクトは IConfiguration の次の 2 つのキーになります。

_config["テスト:キー1"]

_config["test:key2"]

これは、このフラット化された方法で設定を保存することにより、Azure App Configuration で目的を正確に達成できることを意味します。Azure portal の Azure App Configuration UI には、appsettings.json ファイルをインポートできるインポート ユーティリティがあり、このインポートが自動的に行われます。

以下は、使用中のインポート ユーティリティの例です。 ここに画像の説明を入力

ここに画像の説明を入力

Azure App Configuration でフラット化されたオブジェクトを取得すると、正確なコードが機能します。

于 2020-04-16T15:41:27.730 に答える