简体   繁体   English

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

[英]ASP.NET Core: IConfigurationBuilder Does Not Contain Definition For AddAzureKeyVault

I am upgrading my ASP.NET Core web app to .NET Core 2.1, but am getting the following error:我正在将我的 ASP.NET Core Web 应用程序升级到 .NET Core 2.1,但出现以下错误:

IConfigurationBuilder Does Not Contain Definition For AddAzureKeyVault IConfigurationBuilder 不包含 AddAzureKeyVault 的定义

This code works in .NET Core 2.0.此代码适用于 .NET Core 2.0。 It looks like a library is missing in .NET Core 2.1. .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");
    }
}

Answer回答

Install the Microsoft.Extensions.Configuration.AzureKeyVault NuGet Package.安装Microsoft.Extensions.Configuration.AzureKeyVault NuGet 包。

No changes to the code are necessary.无需更改代码。

UPDATE: The Microsoft.Extensions.Configuration.AzureKeyVault NuGet Package has been deprecated.更新: Microsoft.Extensions.Configuration.AzureKeyVault NuGet 包已被弃用。 The new NuGet Packages is Azure.Extensions.AspNetCore.Configuration.Secrets .新的 NuGet 包是Azure.Extensions.AspNetCore.Configuration.Secrets

Explanation解释

ASP.NET Core 2.0 template used the Microsoft.AspNetCore.All NuGet package which includes the Azure Key Vault extensions for IConfiguration, but ASP.NET Core 2.1 template uses Microsoft.AspNetCore.App which does not include the extension library. ASP.NET Core 2.0 模板使用Microsoft.AspNetCore.All NuGet 包,其中包括 IConfiguration 的 Azure Key Vault 扩展,但 ASP.NET Core 2.1 模板使用Microsoft.AspNetCore.App不包括扩展库。

Code代码

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");
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 “IConfigurationBuilder”不包含“AddAzureAppConfiguration”的定义 - 'IConfigurationBuilder' does not contain a definition for 'AddAzureAppConfiguration' Asp.Net不包含buttonClick的定义吗? - Asp.Net does not contain a definition for buttonClick? ASP.Net模型不包含定义 - ASP.Net Model does not contain definition ASP.NET Core API 获取错误:&#39;EntityEntry<Vehicle> &#39; 不包含定义 - ASP.NET Core API Get error: 'EntityEntry<Vehicle>' does not contain a definition “IServiceCollection”不包含“AddAWSService”的定义,并且在asp.net core 2.2 中没有可访问的扩展方法“AddAWSService”错误? - 'IServiceCollection' does not contain a definition for 'AddAWSService' and no accessible extension method 'AddAWSService' error in asp.net core 2.2? ASP.NET Core.Http.HttpRequest 不包含“CreateResponse”、“RequestUri”和“CreateErrorResponse”的定义 - ASP.NET Core.Http.HttpRequest does not contain definition for 'CreateResponse','RequestUri' and 'CreateErrorResponse' ASP.NET 内核 - 如何解决“ICollection”<approvalattachment> ' 不包含 'FilePath' 的定义并且没有可访问的扩展方法</approvalattachment> - ASP.NET Core - How to resolve 'ICollection<ApprovalAttachment>' does not contain a definition for 'FilePath' and no accessible extension method ASP.NET 核心 Web API - 'IRuleBuilderInitial<customertransactionrequestdto, decimal> ' 不包含 'CustomCurrency' 的定义</customertransactionrequestdto,> - ASP.NET Core Web API - 'IRuleBuilderInitial<CustomerTransactionRequestDto, decimal>' does not contain a definition for 'CustomCurrency' 选项 <Applications> 在ASP.NET 5 Beta 8中不包含定义“选项” - IOptions<Applications> does not contain definition 'Options' in ASP.NET 5 Beta 8 Web模型在ASP.NET MVC中不包含定义 - Web model does not contain a definition in asp.net mvc
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM