Asp.net-Core-1.0

IConfigurationRoot 中的選項配置不起作用?

  • December 29, 2016

以下程式碼摘自 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.Extensions.Configuration.IConfigurationRoot”轉換為“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));

這是擁有如此多模組化打包擴展的缺點。很容易忘記功能存在的位置。

引用自:https://stackoverflow.com/questions/37323475