У меня есть следующий код в моей программе.builder.Services.AddScoped
В Visual Studio это компилируется и позволяет мне использовать моего пользовательского поставщика для управления моими функциями, как и предполагаемые. < /p>
if (await _featureManager.IsEnabledAsync("Somefeature", new IdFilterContext(id)))...
< /code>
Это также работает нормально, развернуто для AWS. < /p>
Всякий раз, когда мои коллеги, которые используют код VS или гонщик на Mac, пытаются скомпилировать, они получают следующую ошибку: < /p>
System.InvalidOperationException: Cannot resolve scoped service 'Microsoft.FeatureManagement.IFeatureDefinitionProvider' from root provider.
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteValidator.ValidateResolution(ServiceCallSite callSite, IServiceScope scope, IServiceScope rootScope)
at Microsoft.Extensions.DependencyInjection.ServiceProvider.OnResolve(ServiceCallSite callSite, IServiceScope scope)
at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(ServiceIdentifier serviceIdentifier, ServiceProviderEngineScope serviceProviderEngineScope)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.GetService(Type serviceType)
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)
at Microsoft.FeatureManagement.ServiceCollectionExtensions.c.b__0_1(IServiceProvider sp)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitFactory(FactoryCallSite factoryCallSite, RuntimeResolverContext context)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
at Microsoft.Extensions.Dependen
< /code>
Любая подсказка о том, почему есть разница? И возможное решение? < /P>
Вот пример: < /p>
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.FeatureManagement;
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
// Setup DI
var services = new ServiceCollection();
services.AddScoped().AddFeatureManagement();
var serviceProvider = services.BuildServiceProvider();
// Get the service
var featureService = serviceProvider.GetRequiredService();
var featureIsEnabled = await featureService.IsEnabledAsync("test");
Console.WriteLine($"Feature is enabled: {featureIsEnabled}");
internal class DatabaseFeatureProvider : IFeatureDefinitionProvider
{
public async Task GetFeatureDefinitionAsync(string featureName)
{
return new FeatureDefinition
{
Name = "test",
EnabledFor = true
? new[] { new FeatureFilterConfiguration { Name = "AlwaysOn" } }
: Array.Empty()
};
}
public async IAsyncEnumerable GetAllFeatureDefinitionsAsync()
{
var parameters = new ConfigurationBuilder().AddInMemoryCollection().Build();
yield return GetFeatureDefinition("test", true, "filter", parameters);
}
private FeatureDefinition GetFeatureDefinition(string featureName, bool isEnabled, string filterName, IConfiguration parameters)
{
var featureDefinition = new FeatureDefinition
{
Name = featureName
};
if (isEnabled)
{
featureDefinition.EnabledFor = new[]
{
new FeatureFilterConfiguration
{
Name = filterName,
Parameters = parameters
}
};
}
return featureDefinition;
}
}
< /code>
Project: < /p>
Exe
net9.0
enable
enable
Подробнее здесь: https://stackoverflow.com/questions/797 ... in-vs-code
Microsoft Management Management Provider DI ошибка в коде VS [закрыто] ⇐ C#
Место общения программистов C#
1758230543
Anonymous
У меня есть следующий код в моей программе.builder.Services.AddScoped
В Visual Studio это компилируется и позволяет мне использовать моего пользовательского поставщика для управления моими функциями, как и предполагаемые. < /p>
if (await _featureManager.IsEnabledAsync("Somefeature", new IdFilterContext(id)))...
< /code>
Это также работает нормально, развернуто для AWS. < /p>
Всякий раз, когда мои коллеги, которые используют код VS или гонщик на Mac, пытаются скомпилировать, они получают следующую ошибку: < /p>
System.InvalidOperationException: Cannot resolve scoped service 'Microsoft.FeatureManagement.IFeatureDefinitionProvider' from root provider.
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteValidator.ValidateResolution(ServiceCallSite callSite, IServiceScope scope, IServiceScope rootScope)
at Microsoft.Extensions.DependencyInjection.ServiceProvider.OnResolve(ServiceCallSite callSite, IServiceScope scope)
at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(ServiceIdentifier serviceIdentifier, ServiceProviderEngineScope serviceProviderEngineScope)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.GetService(Type serviceType)
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)
at Microsoft.FeatureManagement.ServiceCollectionExtensions.c.b__0_1(IServiceProvider sp)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitFactory(FactoryCallSite factoryCallSite, RuntimeResolverContext context)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
at Microsoft.Extensions.Dependen
< /code>
Любая подсказка о том, почему есть разница? И возможное решение? < /P>
Вот пример: < /p>
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.FeatureManagement;
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
// Setup DI
var services = new ServiceCollection();
services.AddScoped().AddFeatureManagement();
var serviceProvider = services.BuildServiceProvider();
// Get the service
var featureService = serviceProvider.GetRequiredService();
var featureIsEnabled = await featureService.IsEnabledAsync("test");
Console.WriteLine($"Feature is enabled: {featureIsEnabled}");
internal class DatabaseFeatureProvider : IFeatureDefinitionProvider
{
public async Task GetFeatureDefinitionAsync(string featureName)
{
return new FeatureDefinition
{
Name = "test",
EnabledFor = true
? new[] { new FeatureFilterConfiguration { Name = "AlwaysOn" } }
: Array.Empty()
};
}
public async IAsyncEnumerable GetAllFeatureDefinitionsAsync()
{
var parameters = new ConfigurationBuilder().AddInMemoryCollection().Build();
yield return GetFeatureDefinition("test", true, "filter", parameters);
}
private FeatureDefinition GetFeatureDefinition(string featureName, bool isEnabled, string filterName, IConfiguration parameters)
{
var featureDefinition = new FeatureDefinition
{
Name = featureName
};
if (isEnabled)
{
featureDefinition.EnabledFor = new[]
{
new FeatureFilterConfiguration
{
Name = filterName,
Parameters = parameters
}
};
}
return featureDefinition;
}
}
< /code>
Project: < /p>
Exe
net9.0
enable
enable
Подробнее здесь: [url]https://stackoverflow.com/questions/79768727/microsoft-feature-management-custom-provider-di-error-in-vs-code[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия