Настройка параметров из IConfigurationRoot не работает?
следующий код вырезается из примеров в docs.asp.net.
public void ConfigureServices(IServiceCollection services)
{
// Setup options with DI
services.AddOptions();
// Configure MyOptions using config
services.Configure<MyOptions>(Configuration);
// Configure MyOptions using code
services.Configure<MyOptions>(myOptions =>
{
myOptions.Option1 = "value1_from_action";
});
вызов services.Configure<MyOptions>(Configuration);
вызывает ошибку компиляции:
не удается преобразовать из ' Microsoft.Увеличение.Конфигурация.IConfigurationRoot 'to' система.Действие'
ручная настройка параметров работает нормально. Я упускаю что-то действительно очевидное?
2 ответов
У меня была такая же проблема, и я узнал, что вам нужно добавить это расширение в свой проект:
Microsoft.Увеличение.Опции.ConfigurationExtensions
вам нужно добавить следующий пакет nuget в ваш проект ASP Core, если вы хотите настроить строго типизированную конфигурацию таким образом.
Microsoft.Extensions.Options.ConfigurationExtensions
методы расширения, содержащиеся в пакете, позволят вам настроить строго типизированную конфигурацию так, как вы хотите, и так, как показывают большинство учебных пособий.
services.Configure<MyOptions>(Configuration);
как вариант, вы можете добавить еще один пакет связующего:
Microsoft.Extensions.Configuration.Binder
конфигурация будет выглядеть что-то вот так:
services.AddOptions();
services.Configure<MyOptions>(x => Configuration.Bind(x));
это недостаток иметь так много модульных упакованных вверх расширений. Становится легко потерять след, где функциональность существует.