因为appsettings.json已经足够了,所以hosting.json有什么意义
在.NET Core 2 Web API应用程序中,我可以使用appsettings.json
覆盖配置urls
,但是在official docs中他们引入了额外文件“hosting.json”,为什么?增加复杂性的意义何在?因为appsettings.json已经足够了,所以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实现有关。
我认为,hosting.json是专门用于asp.net核心应用程序托管的配置文件。 (如果您知道更多关于主机的信息)
WebHostBuilder直接将其密钥与hosting.json文件映射,并且它不像我们在正常配置设置中那样加载配置部分。
根据附加在您的文章
使用配置配置主机链接。在以下示例中,可以选择在hosting.json文件中指定 主机配置。从hosting.json文件加载的任何 配置可能会被 命令行参数覆盖。
如果我们明确我们hosting.json那么WebHostBuilder配置可以使用DOTNET命令进行修改。
例如
DOTNET运行--urls的 “http:// *:8080”
这将覆盖从hostings.json文件的URL。
希望这可能会给出一些想法。
PC:hosting.json可以改名像myappsettings.json它可以 具有配置和虚拟主机生成器配置。
要从命令行重写hosting.json或任何[name] .json网址,它通过.AddCommandLine(args)完成,在这方面没有什么特别的关于hosting.json。 –
我想重写hosting.json。这就是文档所说的。此外,它有道理hosting.json具有特定的主机配置其他像任何其他行话,如DB配置或日志记录或其他配置的详细信息。 –
这是非常常见的设计,每个应用程序只有一个配置文件。当用户计划部署应用程序时,跳转不同的配置文件以调整或验证配置参数并不好。 –