在.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实现有关。
答案 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配置。