首页 > 解决方案 > ASP.NET Core 选项模式,名称由单个下划线分割

问题描述

我正在尝试使用 ASP.NET Core 选项模式加载我的应用程序设置。

appsettings.json包含:

{
  "TEst": "hello",
  "TEST_ABC": "2" 
}

POCO 类:

public class AppSetting
{
    public string Test { get; set; }

    public string TestAbc { get; set; }
}

绑定到配置:

services.Configure<AppSetting>(Configuration);

在控制器中访问 AppSetting 实例时,我只能将 config 设置Testhello. TestAbc设置为null

似乎Options模式无法转换这种命名配置,是否可以通过任何其他方式来实现这一点?

标签: asp.net-coreasp.net-core-configuration

解决方案


自动完成的唯一方法是使用下划线 ( Test_Abc) 命名您的属性。除此之外,您可以手动指定映射:

services.Configure<AppSettings>(o => 
{
    o.TestAbc = Configuration["TEST_ABC"];
    // etc.
});

@DavidG 关于使用的评论[JsonProperty] 可能有效。我从来没有在配置的上下文中尝试过。但是,它只有在使用 JSON 配置提供程序时才有效,如果它完全有效的话。例如,如果您以后需要通过环境变量来满足这一点,那么您就不走运了。因此,我会坚持使用比这更普遍适用的解决方案。


推荐阅读