Не удалось разрешить службу для типа конфигурации расширений Microsoft IConfiguration
Я получаю эту ошибку, не могу понять, убейте меня.
Не удалось разрешить службу для типа Microsoft.Extensions.Configuration.IConfiguration при попытке активировать Microsoft.FeatureManagement.ConfigurationFeatureSettingsProvider.
Это простое консольное приложение.net core 2.2, в которое добавлены следующие пакеты nuget.
- https://www.nuget.org/packages/Microsoft.Extensions.Configuration.Json/2.1.1
- https://www.nuget.org/packages/Microsoft.Extensions.DependencyInjection/2.1.1
- 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();