什么是hosting.json的重点,因为appsettings.json就足够了

时间:2017-10-11 19:30:42

标签: c# configuration .net-core asp.net-core-webapi asp.net-core-2.0

在.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和自动启动网址),否则它将无法胜任。我猜它与CreateDefaultBuilder实现有关。

1 个答案:

答案 0 :(得分:-1)

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

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

根据您帖子中附带的链接

  

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

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

例如

dotnet run --urls&#34; http:// *:8080&#34;

这会覆盖来自hostings.json文件的网址。

希望这可能会有所启发。

  

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