Asp.net-Core-1.0
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.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));這是擁有如此多模組化打包擴展的缺點。很容易忘記功能存在的位置。