建议使用 webapplicationbuilder.configuration 而不是 configureappconfiguration

san*_*tro 2 c# azure-keyvault asp.net-core visual-studio-2022 .net-7.0

我正在尝试使用 Visual Studio 2022(企业版)使用 .NET 7 asp.net core Web api 应用程序的托管标识从 appsettings.Development.json 文件中读取值

这是 Program.cs 的代码:

var builder = WebApplication.CreateBuilder(args);
var config = builder.Configuration;

// Add AzureKeyVault

    builder.Host.ConfigureAppConfiguration((context, appConfig) =>
    {
        var objBuiltConfig = appConfig.Build();
        var userAssignedClientId = objBuiltConfig[AppKeys.UserAssignedClientId];
        var objSecretClient = new SecretClient(new Uri(objBuiltConfig[AppKeys.KeyVaultURL]),
            new DefaultAzureCredential(new DefaultAzureCredentialOptions
            {
                ManagedIdentityClientId = userAssignedClientId
            }));
        config.AddAzureKeyVault(objSecretClient, new KeyVaultSecretManager());
    });
Run Code Online (Sandbox Code Playgroud)

在代码编辑器中我看到警告:

建议使用 webapplicationbuilder.configuration 而不是 configureappconfiguration

即使在调试时我也没有得到数据。

任何人都可以帮助我提供一些代码示例,该示例将作为我的实现的参考

====================更新======================

var userAssignedClientId = config[AppKeys.UserAssignedClientId]; 
var keyVaultURL = config[AppKeys.KeyVaultURL]; 

builder.Configuration.AddAzureKeyVault(new Uri(uriString: keyVaultURL), new 
     DefaultAzureCredential(new DefaultAzureCredentialOptions { 
          ManagedIdentityClientId = userAssignedClientId })); 
Run Code Online (Sandbox Code Playgroud)

但现在我在new Uri(uriString: keyVaultURL). 我想知道它为什么会来。

Mar*_*llo 5

而不是这个:

builder.Host.ConfigureAppConfiguration((context, appConfig) =>
{
    config.AddAzureKeyVault(...);
});
Run Code Online (Sandbox Code Playgroud)

改成这样:

builder.Configuration.AddAzureKeyVault(...);
Run Code Online (Sandbox Code Playgroud)

以下是我维护的应用程序的此类方法的示例:github.com/martincostello/SignInWithAppleSample