无法解析类型为Microsoft Extensions Configuration IConfiguration的服务

25

我遇到了这个错误,但是无论如何都无法理解。

尝试激活“Microsoft.FeatureManagement.ConfigurationFeatureSettingsProvider”时,无法解析类型为“Microsoft.Extensions.Configuration.IConfiguration”的服务。

这是一个简单的 .net core 2.2 控制台应用程序,并添加了以下 NuGet 包。

  1. Microsoft.Extensions.Configuration.Json
  2. Microsoft.Extensions.DependencyInjection
  3. Microsoft.FeatureManagement
using System;
using System.Threading.Tasks;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.FeatureManagement;
using Microsoft.FeatureManagement.FeatureFilters;

namespace ConfigurationConsoleApp
{
    class Program
    {
        static async Task Main(string[] args)
        {
            const string FeatureName = "Beta";

            var configuration = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
            var services = new ServiceCollection();
            services.AddSingleton(configuration).AddFeatureManagement().AddFeatureFilter<PercentageFilter>().AddFeatureFilter<AccountIdFilter>();
            var serviceProvider = services.BuildServiceProvider();
            var featureManager = serviceProvider.GetRequiredService<IFeatureManager>();
            var enabled = await featureManager.IsEnabledAsync(FeatureName);
            Console.WriteLine($"The {FeatureName} feature is {(enabled ? "enabled" : "disabled")} ");
        }
    }
}

// The following are the command for the packages.

dotnet add package Microsoft.Extensions.Configuration.Json --version 2.1.1
dotnet add package Microsoft.Extensions.DependencyInjection --version 2.1.1
dotnet add package Microsoft.FeatureManagement --version 2.0.0-preview-010610001-1263



1
这个回答解决了你的问题吗?ASP.NET Core依赖注入错误:尝试激活时无法解析类型 - Camilo Terevinto
2个回答

38
好的,经过数小时的苦思冥想,终于完成了。
services.AddSingleton(configuration).AddFeatureManagement().AddFeatureFilter<PercentageFilter>().AddFeatureFilter<AccountIdFilter>();

should be 

services.AddSingleton<IConfiguration>(configuration).AddFeatureManagement().AddFeatureFilter<PercentageFilter>().AddFeatureFilter<AccountIdFilter>();


注意通用的 我还注意到,将配置对象声明为IConfiguration也可以解决问题。使用var声明配置会出现问题。不要使用var,而是使用IConfiguration。然后问题就解决了。

0

非常抱歉将此评论作为答案,但上述代码请注意如果您在新项目中使用它。它仍然会进入根目录搜索,当您有两个具有相同 application.Environment.json 的项目时可能会引起问题。

var configuration = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接