【问题标题】:How to fix "Microsoft.Azure.KeyVault.Models.KeyVaultErrorException: 'Operation returned an invalid status code 'NotFound''"如何修复“Microsoft.Azure.KeyVault.Models.KeyVaultErrorException:'操作返回无效状态代码'NotFound''”
【发布时间】:2021-08-09 01:20:32
【问题描述】:

我正在尝试从 ASP.net 5 Web API 应用程序中的 Azure Key Vault 获取值。但是面临这个问题。

我已经在 Program.cs 文件中添加了这段代码

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            })
        .ConfigureAppConfiguration((context, config) =>
        {
            var builtConfig = config.Build();
            var vaultName = builtConfig["keyvault"];

            var keyVaultClient = new KeyVaultClient(
                async (authoriy, resource, scope) =>
                {
                    var credential = new DefaultAzureCredential(false);
                    var token = credential.GetToken(
                            new TokenRequestContext(
                                new[] {"https://vault.azure.net/.default" }
                                )
                        );
                    return token.Token;
                });
            config.AddAzureKeyVault(
                vaultName,
                keyVaultClient,
                new DefaultKeyVaultSecretManager());
        });

在 appsettings.json 文件中,我给出了这样的密钥库 URL。

"Keyvault": "https://<<vaultName>>.vault.azure.net/.default"

我已经创建了名为“StorageConnectionString”的秘密,我在 Azure Key-vault 的班级中使用。

public BlobContainerProvider(IConfiguration configuration) 
    {
        
        string connectionString = configuration.GetValue<string>("StorageConnectionString");

        blobServiceClient = new BlobServiceClient(connectionString);
    }

提前致谢。

【问题讨论】:

  • 检查这些是否有帮助stackoverflow.com/questions/51124843/…
  • 您确定您在密钥保管库中有 nae StorageConnectionString 的秘密吗?
  • 我很想直接实施并使用Key Vault References - 请注意,这不是答案,而是对另一种解决方案的建议。
  • 你为什么要这样做:"EventStoreKeyvault": "https://&lt;&lt;vaultName&gt;&gt;.vault.azure.net/.default"?
  • @blockingHD,是的,这是个好建议。但它不符合托管身份。

标签: azure asp.net-core azure-keyvault .net-5 asp.net5


【解决方案1】:

我发现了问题,其实是在 appsettings.json 中

我已经提到了

"Keyvault": "https://<<vaultName>>.vault.azure.net/.default"

而 URL 中不应放置“.default”。

所以一般来说,如果我们放置了一个不可用的 key-vault URL,就会抛出这种类型的错误。

@Gaurav Mantri,感谢您在 cmets 中指出这一点。

【讨论】:

  • 太棒了!很高兴得知您的问题已得到解决。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-09
  • 2021-03-08
  • 1970-01-01
相关资源
最近更新 更多