What's the point of hosting.json since appsettings.json is sufficient

前提是你 提交于 2019-12-30 07:07:28

问题


In .NET Core 2 Web API app, I could override configuration urls using appsettings.json, but in the official docs they introduced extra file "hosting.json", Why? What's the point of adding complexity?

Below code is fully working using 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 content:

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

Side note: Commenting .SetBasePath(Directory.GetCurrentDirectory()) will keep VS 2017 debug mode operational (means apply launchSettings.json, and auto launch url) otherwise it won't. I guess its related to the CreateDefaultBuilder implementation.


回答1:


I think, hosting.json is a configuration file used specifically for asp.net core application hosting. (if you know more about hosting)

WebHostBuilder directly maps its keys with the hosting.json file and it doesn't have the capability to load the config section as we do in normal configuration settings.

According to link attached in your post

Use Configuration to configure the host. In the following example, host configuration is optionally specified in a hosting.json file. Any configuration loaded from the hosting.json file may be overridden by command-line arguments.

If only we explicitly us hosting.json then the WebHostBuilder configurations can be modified using dotnet command.

for example

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

this will override the urls from hostings.json file.

Hopefully, this may give some idea.

PC: hosting.json can be renamed like myappsettings.json it can have configuration and Web Host Builder configuration.



来源:https://stackoverflow.com/questions/46696115/whats-the-point-of-hosting-json-since-appsettings-json-is-sufficient

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!