hosting.json有什么意义,因为appsettings.json就足够了

在.NET Core 2 Web API应用程序中,我可以使用appsettings.json覆盖配置urls ,但在官方文档中他们引入了额外的文件“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() .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实现有关。

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

WebHostBuilder直接将其密钥映射到hosting.json文件,并且它没有像正常配置设置那样加载配置部分的function。

根据你post中的链接

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

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

例如

dotnet run –urls“http:// *:8080”

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

希望这可能会有所启发。

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