Не удалось разрешить службу для типа конфигурации расширений Microsoft IConfiguration

Я получаю эту ошибку, не могу понять, убейте меня.

Не удалось разрешить службу для типа Microsoft.Extensions.Configuration.IConfiguration при попытке активировать Microsoft.FeatureManagement.ConfigurationFeatureSettingsProvider.

Это простое консольное приложение.net core 2.2, в которое добавлены следующие пакеты nuget.

  1. https://www.nuget.org/packages/Microsoft.Extensions.Configuration.Json/2.1.1
  2. https://www.nuget.org/packages/Microsoft.Extensions.DependencyInjection/2.1.1
  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


2 ответа

Решение

Хорошо, вот она после часов выдергивания волос.

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

should be 

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

Обратите внимание на общий <IConfiguration>

Также я заметил, что объявление объекта конфигурации как IConfiguration также поможет. Использование var для объявления конфигурации создает проблему. Вместо var используйте IConfiguration. Потом опять проблема уходит.

Извините за комментарий в качестве ответа, но будьте осторожны с приведенным выше кодом, если вы используете его в новом проекте. Он все еще идет в корень для его поиска, может вызвать проблемы, если у вас есть 2 проекта с одним и тем же приложением.

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

Другие вопросы по тегам