【问题标题】:ConfigureAppConfiguration throws UriFormatException when I try to connect to my Azure key vault当我尝试连接到 Azure 密钥保管库时,ConfigureAppConfiguration 引发 UriFormatException
【发布时间】:2020-07-02 15:32:28
【问题描述】:

我正在尝试使用使用客户端 ID 和证书连接到密钥保管库。我收到一个错误。在 Program.cs 中添加 .ConfigureAppConfiguration 部分之前,我的代码正在运行。 不知道如何总结整个过程,因为它非常冗长(我主要遵循 youtube 上名为“如何在 .NET Core 中使用 Azure Key Vault(使用证书)安全地存储和加载机密”的教程)。我应该总结一下我在问题结束时采取的步骤吗? (我已将它们记录在一个 40 页的 Word 文档中。)

下面是我的 Program.cs 类的副本(错误在 builder.AddAzureKeyVault 之后立即触发):

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

        public IConfiguration Configuration { get; set; }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureAppConfiguration(builder =>
                {
                    var configuration = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
                    var vaultName = configuration.GetSection("KeyVault").GetSection("Vault").Value;
                    builder.AddAzureKeyVault($"https//{vaultName}.vault.azure.net/",
                    configuration.GetSection("KeyVault").GetSection("ClientId").Value,
CertificateHelper.GetCertificate(configuration.GetSection("KeyVault").GetSection("Thumbprint").Value),
                        new PrefixKeyVaultSecretManager("PrefixOfMySecret"));
                })
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    }

错误是这个(关于 UriFormat,但我不知道它是哪个 Uri)。

System.UriFormatException HResult=0x80131537 消息=无效的 URI: 无法确定 URI 的格式。
Source=System.Private.Uri StackTrace:在 System.Uri.CreateThis(字符串 uri,布尔值 dontEscape,UriKind uriKind) 在 System.Uri..ctor(String uriString) 在 Microsoft.Azure.KeyVault.KeyVaultClient.d__66.MoveNext() 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务 任务)等等等等

你会说它似乎与什么有关?

我应该尝试手动访问哪个 Uri 并且一旦确定? 谢谢。

PS。如果它与 $"https//{vaultName}.vault.azure.net/" 相关,我是否可以在浏览器中打开它:http://https//my-keyvault.vault.azure.net/?如果我尝试,我会收到“无法访问此站点”错误。

【问题讨论】:

    标签: c# azure ssl-certificate x509certificate azure-keyvault


    【解决方案1】:

    您的代码中的 uri 不正确,“https”后缺少 : 字符。应该是:

    https://{vaultName}.vault.azure.net/
    

    您也可以在浏览器中打开此uri,请在浏览器中输入https://{vaultName}.vault.azure.net/,而不是http://https//my-keyvault.vault.azure.net/。它不会显示“无法访问此站点”,而是显示“您无权使用您提供的凭据查看此目录或页面”。

    【讨论】:

      猜你喜欢
      • 2016-10-13
      • 1970-01-01
      • 1970-01-01
      • 2021-04-02
      • 1970-01-01
      • 2019-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多