无法解析类型 Microsoft 扩展配置 IConfiguration 的服务



我收到此错误,无法理解我的生活。

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

这是一个简单的 .net 核心 2.2 控制台应用,添加了以下 nuget 包。

  1. Microsoft.Extensions.Configuration.json
  2. Microsoft.扩展.依赖注入
  3. Microsoft.功能管理
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

好的,这是经过几个小时的拔头发。

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 个项目具有相同的应用程序时,可能会导致问题。环境.json

var configuration = new ConfigurationBuilder((。AddJsonFile("appsettings.json"(.构建((;

最新更新