既然 appsettings.json 就足够了,那么 hosting.json 有什么意义

问题描述 投票:0回答:2

在 .NET Core 2 Web API 应用程序中,我可以使用

urls
覆盖配置
appsettings.json
,但是在 official docs 他们引入了额外的文件“hosting.json”,为什么?增加复杂性有什么意义?

下面的代码完全可以使用

appsettings.json
:

public class Program
{
    public static void Main(string[] args)
    {
        BuildWebHost(args).Run();
    }

    public static IWebHost BuildWebHost(string[] args)
    {
        var config = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory()) //see Side note below
            .AddJsonFile("appsettings.json", optional: true)
            .AddCommandLine(args)
            .Build();

        return WebHost.CreateDefaultBuilder(args)
            .UseConfiguration(config)
            .UseStartup<Startup>()
            .Build();
    }
}

appsettings.json 内容:

{
  "Logging": {
    "IncludeScopes": false,
    "Debug": {
      "LogLevel": {
        "Default": "Warning"
      }
    },
    "Console": {
      "LogLevel": {
        "Default": "Warning"
      }
    }
  },
  "urls": "http://*:5005/"
}

旁注: 评论

.SetBasePath(Directory.GetCurrentDirectory())
将使 VS 2017 调试模式保持运行(意味着应用
launchSettings.json
,和自动启动 url)否则它不会。我猜它与 CreateDefaultBuilder 实现有关。

c# configuration .net-core asp.net-core-webapi asp.net-core-2.0
2个回答
0
投票

我认为,这只是用于分离主机和应用程序配置以遵循SRP(单一职责原则)的约定。 您可以将它们保存在同一个文件中,如果需要,可以用注释分隔


-1
投票

我觉得,hosting.json是一个专门用于asp.net core应用程序托管的配置文件。 (如果您对托管了解更多)

WebHostBuilder 直接将其密钥映射到 hosting.json 文件,并且它无法像我们在正常配置设置中那样加载 config 部分

根据您帖子中的链接

使用配置来配置主机。在下面的例子中, 主机配置可以选择在 hosting.json 文件中指定。任何 从 hosting.json 文件加载的配置可能会被覆盖 命令行参数。

如果我们只显式使用 hosting.json,那么可以使用 dotnet 命令修改 WebHostBuilder 配置。

例如

dotnet run --urls "http://*:8080"

这将覆盖 hostings.json 文件中的 url。

希望这可以提供一些想法。

PC:hosting.json 可以重命名为 myappsettings.json 它可以 有配置和 Web Host Builder 配置。

© www.soinside.com 2019 - 2024. All rights reserved.