我正在将一个 ASP.NET 5 RC1 项目迁移到 ASP.NET Core,遇到了一个有趣的问题,我还没有看到,也没有找到解决方案。
为了在 Startup 中使用配置设置,我之前通过以下方式检索了配置
// 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 Core 1.0 后,Configuration.Get
我已尝试更新代码以使用 Configuration.GetValue
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"
}
]
}
以前这会绑定(bind)到我的配置类的 Clients 属性没问题,我再也找不到在 ASP.NET Core 1.0 中这样做的方法
最佳答案
更新的答案
对于 ASP Core 1.1.0,通用模型绑定(bind)现在使用 Get
完成:
var config = Configuration.GetSection("configuredClients").Get<ClientConfiguration>();
原始答案
这个怎么样:
var config = Configuration.GetSection("configuredClients").Bind<ClientConfiguration>();
关于c# - 启动中的 ASP.NET Core 配置部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40397648/