无法解析类型为 Microsoft Extensions Configuration IConfiguration 的服务
Unable to resolve service for type Microsoft Extensions Configuration IConfiguration
我收到这个错误,我一辈子都无法理解。
在尝试激活 'Microsoft.FeatureManagement.ConfigurationFeatureSettingsProvider' 时无法解析类型 'Microsoft.Extensions.Configuration.IConfiguration' 的服务。
这是一个简单的 .net core 2.2 控制台应用程序,添加了以下 nuget 包。
- Microsoft.Extensions.Configuration.Json
- Microsoft.Extensions.DependencyInjection
- 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
好的,这是经过几个小时的拔毛之后。
services.AddSingleton(configuration).AddFeatureManagement().AddFeatureFilter<PercentageFilter>().AddFeatureFilter<AccountIdFilter>();
should be
services.AddSingleton<IConfiguration>(configuration).AddFeatureManagement().AddFeatureFilter<PercentageFilter>().AddFeatureFilter<AccountIdFilter>();
注意泛型 <IConfiguration>
我还注意到,将配置对象声明为 IConfiguration 也可以达到目的。使用 var 声明配置会产生问题。使用 IConfiguration 而不是 var。然后问题又消失了。
很抱歉将此评论作为答案,但如果您在新项目中使用上面的代码,请小心。它仍然进入根目录进行搜索,当您有 2 个具有相同 application.Environment.json
的项目时可能会导致问题
var configuration = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
我收到这个错误,我一辈子都无法理解。
在尝试激活 'Microsoft.FeatureManagement.ConfigurationFeatureSettingsProvider' 时无法解析类型 'Microsoft.Extensions.Configuration.IConfiguration' 的服务。
这是一个简单的 .net core 2.2 控制台应用程序,添加了以下 nuget 包。
- Microsoft.Extensions.Configuration.Json
- Microsoft.Extensions.DependencyInjection
- 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
好的,这是经过几个小时的拔毛之后。
services.AddSingleton(configuration).AddFeatureManagement().AddFeatureFilter<PercentageFilter>().AddFeatureFilter<AccountIdFilter>();
should be
services.AddSingleton<IConfiguration>(configuration).AddFeatureManagement().AddFeatureFilter<PercentageFilter>().AddFeatureFilter<AccountIdFilter>();
注意泛型 <IConfiguration>
我还注意到,将配置对象声明为 IConfiguration 也可以达到目的。使用 var 声明配置会产生问题。使用 IConfiguration 而不是 var。然后问题又消失了。
很抱歉将此评论作为答案,但如果您在新项目中使用上面的代码,请小心。它仍然进入根目录进行搜索,当您有 2 个具有相同 application.Environment.json
的项目时可能会导致问题var configuration = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();