【问题标题】:ASP.NET Core: IConfigurationBuilder Does Not Contain Definition For AddAzureKeyVaultASP.NET Core:IConfigurationBuilder 不包含 AddAzureKeyVault 的定义
【发布时间】:2018-09-30 16:28:12
【问题描述】:

我正在将我的 ASP.NET Core Web 应用程序升级到 .NET Core 2.1,但出现以下错误:

IConfigurationBuilder 不包含 AddAzureKeyVault 的定义

此代码适用于 .NET Core 2.0。 .NET Core 2.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");
    }
}

【问题讨论】:

    标签: c# asp.net-core asp.net-core-2.1 azure-keyvault


    【解决方案1】:

    回答

    安装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 Key Vault 扩展,但 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");
        }
    }
    

    【讨论】:

    • Microsoft.Extensions.Configuration.AzureKeyVault 已被弃用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多