【问题标题】:What's the point of hosting.json since appsettings.json is sufficient因为 appsettings.json 就足够了,所以 hosts.json 有什么意义
【发布时间】:2018-03-23 14:16:34
【问题描述】:

在 .NET Core 2 Web API 应用程序中,我可以使用 appsettings.json 覆盖配置 urls,但在 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


    【解决方案1】:

    我认为,hosting.json是一个专门用于asp.net核心应用托管的配置文件。 (如果您对托管有更多了解)

    WebHostBuilder 直接将其键映射到 hosting.json 文件,它没有像我们在正常配置设置中那样加载 config 部分 的能力。

    根据您帖子中的链接

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

    如果我们明确地使用 hosting.json,那么可以使用 dotnet 命令修改 WebHostBuilder 配置。

    例如

    dotnet 运行 --urls "http://*:8080"

    这将覆盖来自 hosts.json 文件的网址。

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

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

    【讨论】:

    • 从命令行覆盖hosting.json或任何[name].json url,由.AddCommandLine(args)完成,hosting.json在这方面没什么特别的。
    • 我想覆盖hosting.json。这就是文档所说的。此外,拥有具有特定主机配置的 hosting.json 是有意义的,就像任何其他行话,如 db config 或 logging 或其他配置详细信息。
    • 每个应用都有一个配置文件是很常见的设计。当用户计划部署应用程序时,在不同的配置文件之间跳转以调整或验证配置参数并不好。
    • @JawadAlShaikh 是的,我同意。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    • 2014-11-27
    • 2011-03-08
    • 2017-10-05
    • 1970-01-01
    • 2019-01-02
    相关资源
    最近更新 更多