我正在將ASP.NET 5 RC1項目遷移到ASP.NET Core,並遇到了一個我尚未見過的有趣問題,或者找到了解決方案。啓動時的ASP.NET核心配置部分
爲了內啓動使用的配置設置我以前retrived配置方式如下
// Works fine for DI both in ASP.NET 5 RC1 and ASP.NET Core
services.Configure<SomeConfigurationClass>(Configuration.GetSection("SomeConfigurationSection"));
// How I previous retrieved the configuration for use in startup.
// No longer available in ASP.NET Core
var someConfigurationToUseLater = Configuration.Get<SomeConfigurationClass>("SomeConfigurationSection");
更新到ASP.NET核心後1.0似乎Configuration.Get <牛逼>()不再可用。
我試過更新代碼來使用Configuration.GetValue <T>()但是,這似乎不適用於對象,並且只會在提供值的路徑時起作用。這給我留下了一個解決方法最我的配置類的,像這樣
var someConfigurationName = "someConfiguration";
var someConfigurationClass = new SomeConfigurationClass()
{
Value1 = Configuration.GetValue<string>($"{someConfigurationName}:value1"),
Foo = Configuration.GetValue<string>($"{someConfigurationName}:foo"),
Bar = Configuration.GetValue<string>($"{someConfigurationName}:bar")
};
然而,這是一個問題,當配置類包含對象的數組。在我的情況下,客戶對象的數組
public class ClientConfiguration
{
public Client[] Clients { get; set; }
}
用下面的配置
"configuredClients": {
"clients": [
{
"clientName": "Client1",
"clientId": "Client1"
},
{
"clientName": "Client2",
"clientId": "Client2"
}
]
}
如果這之前會綁定到我的配置類沒有問題的客戶財產,我再也找不到的一種方式在ASP.NET 1.0的核心
對此方法的另一投票。我一直在使用這種方法幾個星期,並且它工作得很好。 –
可能值得注意的是我必須將Microsoft.Extensions.Configuration和Microsoft.Extentions.Options.ConfigurationExtensions更新到1.1.0-preview1-final –
這是否已在1.1的最終版本中再次刪除? – AndyM