【问题标题】:Unable to resolve service for type Microsoft Extensions Configuration IConfiguration无法解析类型 Microsoft 扩展配置 IConfiguration 的服务
【发布时间】:2019-12-14 05:07:20
【问题描述】:

我遇到了这个错误,这辈子都无法理解。

在尝试激活“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


【问题讨论】:

标签: dependency-injection .net-core asp.net-core-2.1


【解决方案1】:

好的,这是在拉了几个小时的头发之后。

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

should be 

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

注意通用的&lt;IConfiguration&gt;

我还注意到,将配置对象声明为 IConfiguration 也可以解决问题。使用 var 声明配置会出现问题。使用 IConfiguration 代替 var。然后问题又消失了。

【讨论】:

    【解决方案2】:

    很抱歉将此作为答案发表评论,但如果您在新项目中使用上述代码,请务必小心。它仍然进入根目录进行搜索,当您有 2 个具有相同 application.Environment.json 的项目时可能会导致问题

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-16
      • 2022-01-10
      • 2020-03-13
      • 2019-02-10
      相关资源
      最近更新 更多