我可以在 dotnet core 中添加两个以上的 appsettings.json 文件吗?

Shr*_*dha 5 .net-core asp.net-core

例如 - appsettings-A.json 、appsettings-B.json 等。如果是,如何读取这些文件。这些不是基于环境的。

Fei*_*Han 6

我可以在 dotnet core 中添加两个以上的 appsettings.json 文件吗?

例如 - appsettings-A.json 、appsettings-B.json 等。如果是,如何读取这些文件

当然,我们可以在ASP.NET Core项目中添加并使用多个appsettings.json文件。

要配置并读取自定义 json 文件中的数据,您可以参考以下代码片段。

在 Program.cs 中,配置 JSON 配置提供程序以加载appsettings-B.json文件

Host.CreateDefaultBuilder(args)
    .ConfigureAppConfiguration((hostingContext, config) =>
    {
        config.AddJsonFile("appsettings-B.json",
            optional: true,
            reloadOnChange: true);
    })
    //...
Run Code Online (Sandbox Code Playgroud)

从配置设置读取数据

private readonly ILogger<HomeController> _logger;
private readonly IConfiguration Configuration;
public HomeController(ILogger<HomeController> logger, IConfiguration configuration)
{
    _logger = logger;
    Configuration = configuration;
}

public IActionResult Index()
{
    var testkey_val = Configuration["MyTestSection:TestKey"];
    //...
Run Code Online (Sandbox Code Playgroud)

appsettings-B.json 文件

{
  "MyTestSection": {
    "TestKey": "hello"
  }
}
Run Code Online (Sandbox Code Playgroud)

测试结果

在此输入图像描述

  • 通过这种方法,配置将如何知道要读取哪个文件,就像我有 appsettings-C.json 一样。 (2认同)
  • 恕我直言,这并没有回答这个问题。我相信OP想同时在同一个应用程序中使用两个appsettings.json。在我们的例子中,具体原因是我们希望“正常”appsettings.json 文件始终与应用程序一起部署;但是,我们还有其他设置只能在开发环境中使用,并且我们不希望这些设置出现在普通的 appsettings.json 文件中,以便这些值永远不会出现在任何发布的 appsettings.json 文件中。 (2认同)