代码之家  ›  专栏  ›  技术社区  ›  Brandon Minnick

ASP.NET核心:IConfigurationBuilder不包含AddAzureKeyVault的定义

  •  0
  • Brandon Minnick  · 技术社区  · 7 年前

    IConfigurationBuilder不包含AddAzureKeyVault的定义

    此代码在.NETCore2.0中工作。在.NETCore2.1中似乎缺少一个库。

    using System;
    using Microsoft.AspNetCore;
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.Azure.KeyVault;
    using Microsoft.Azure.Services.AppAuthentication;
    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Configuration.AzureKeyVault;
    
    namespace MyNamesace
    {
        public class Program
        {
            public static void Main(string[] args)
            {
                CreateWebHostBuilder(args).Build().Run();
            }
    
            public static IWebHostBuilder CreateWebHostBuilder(string[] args)
            {
                return WebHost.CreateDefaultBuilder(args)
                        .ConfigureAppConfiguration((ctx, builder) =>
                        {
                            var keyVaultEndpoint = GetKeyVaultEndpoint();
                            if (!string.IsNullOrEmpty(keyVaultEndpoint))
                            {
                                var azureServiceTokenProvider = new AzureServiceTokenProvider();
                                var keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
    
                                builder.AddAzureKeyVault(keyVaultEndpoint, keyVaultClient, new DefaultKeyVaultSecretManager());
                            }
                        })
                        .UseStartup<Startup>();
            }
    
            static string GetKeyVaultEndpoint() => Environment.GetEnvironmentVariable("KeyVaultEndpoint");
        }
    }
    
    1 回复  |  直到 7 年前
        1
  •  13
  •   naspinski    5 年前

    安装 Microsoft.Extensions.Configuration.AzureKeyVault NuGet包。

    不需要对代码进行任何更改。

    这个 Microsoft.Extensions.Configuration.AzureKeyVault NuGet包已被弃用。新的NuGet包是 Azure.Extensions.AspNetCore.Configuration.Secrets .

    解释

    ASP.NET Core 2.0模板使用 Microsoft.AspNetCore.All NuGet包,其中包括用于IConfiguration的Azure密钥保险库扩展,但ASP.NET Core 2.1模板使用 Microsoft.AspNetCore.App

    using System;
    using Microsoft.AspNetCore;
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.Azure.KeyVault;
    using Microsoft.Azure.Services.AppAuthentication;
    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Configuration.AzureKeyVault;
    
    namespace MyNamespace
    {
        public class Program
        {
            public static void Main(string[] args)
            {
                CreateWebHostBuilder(args).Build().Run();
            }
    
            public static IWebHostBuilder CreateWebHostBuilder(string[] args)
            {
                return WebHost.CreateDefaultBuilder(args)
                        .ConfigureAppConfiguration((ctx, builder) =>
                        {
                            var keyVaultEndpoint = GetKeyVaultEndpoint();
                            if (!string.IsNullOrEmpty(keyVaultEndpoint))
                            {
                                var azureServiceTokenProvider = new AzureServiceTokenProvider();
                                var keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
    
                                builder.AddAzureKeyVault(keyVaultEndpoint, keyVaultClient, new DefaultKeyVaultSecretManager());
                            }
                        })
                        .UseStartup<Startup>();
            }
    
            static string GetKeyVaultEndpoint() => Environment.GetEnvironmentVariable("KeyVaultEndpoint");
        }
    }
    
    推荐文章