c# - 启动中的 ASP.NET Core 配置部分

标签 c# asp.net-core asp.net-core-1.0

我正在将一个 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/

相关文章:

c# - 将对象从 C# 传递到 C++ 得到 "cannot use this indirection"?

c# - "Copy Local"和项目引用的最佳实践是什么?

c# - 如何将泛型约束为枚举类型?

c# - Ubuntu 16.04 上的 System.Security.Cryptography.Csp

asp.net-core - Asp.Net core 从 url 获取 RouteData 值

c# - 尝试让 Elmah 手动记录消息时出错

angular - Stimulsoft - 如何在 asp.net core 中渲染报告并以 Angular 显示

c# - 具有空值的必需字符串属性在 ASP.NET Core 2 Razor 页面中给出 IsValid=true

.net - 表单提交导致 "InvalidDataException: Form value count limit 1024 exceeded."

c# - 我如何在 AspNet.Core 中读取 EXIF 数据