IConfigurationRoot 中的选项配置不起作用?

Configuration of options from IConfigurationRoot not working?

以下代码是从 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);的调用 导致编译错误:

cannot convert from 'Microsoft.Extensions.Configuration.IConfigurationRoot' to 'System.Action'

手动设置选项效果很好。我在这里错过了一些非常明显的东西吗?

我遇到了同样的问题,我发现您需要将此扩展添加到您的项目中:

Microsoft.Extensions.Options.ConfigurationExtensions

如果您想以这种方式配置强类型配置,您需要将以下 nuget 包添加到您的 ASP 核心项目中。

Microsoft.Extensions.Options.ConfigurationExtensions

包中包含的扩展方法将允许您按照您想要的方式和大多数教程显示的方式配置强类型配置。

services.Configure<MyOptions>(Configuration);

或者,您可以添加另一个活页夹包:

Microsoft.Extensions.Configuration.Binder

配置将如下所示:

services.AddOptions();
services.Configure<MyOptions>(x => Configuration.Bind(x));

这是拥有这么多模块化打包扩展的缺点。很容易忘记功能存在的位置。