如何修复“Microsoft.Azure.KeyVault.Models.KeyVaultErrorException:'操作返回无效状态代码'NotFound'”

问题描述

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

enter image description here

我已将此代码添加到 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”的 Secret,我在 Azure Key-Vault 的类中使用。

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

        blobServiceClient = new BlobServiceClient(connectionString);
    }

提前致谢。

解决方法

我发现了这个问题,它实际上是在 appsettings.json

我已经提到它了

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

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

因此,通常,如果我们放置了不可用的密钥保管库 URL,则会引发此类错误。

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...