用"hosting.json"配置ASP.NET Core站点的Hosting环境
Posted dotNET跨平台
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用"hosting.json"配置ASP.NET Core站点的Hosting环境相关的知识,希望对你有一定的参考价值。
通常我们在 Prgram.cs 中使用硬编码的方式配置 ASP.NET Core 站点的 Hosting 环境,最常用的就是 .UseUrls() 。
public class Program {
public static void Main(string[] args) {
var host = new WebHostBuilder()
.UseUrls("http://*:5000")
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup<Startup>()
.Build();
host.Run();
}
}
但这种硬编码绑定端口的方式会给在同一台 Linux 服务器上部署多个站点造成麻烦,因为不同站点需要绑定不同的端口。除非你在开发时就已经约定好各个项目使用的端口,否则很容易在部署时遇到端口冲突问题,从而被迫修改代码。
如果能通过配置文件设置绑定的端口,这个问题就迎刃而解。ASP.NET Core 中有没有提供相应的解决之道呢?带着这个问题,今天签出 的源码浏览一番,在 SampleStartups 的 中找到了答案:
var config = new ConfigurationBuilder()
.AddCommandLine(args)
.AddEnvironmentVariables(prefix: "ASPNETCORE_")
.AddJsonFile("hosting.json", optional: true)
.Build();var host = new WebHostBuilder()
.UseConfiguration(config)
原来可以通过 hosting.json 进行配置,下面实际体验一下。
首先创建一个 hosting.json 文件:
{ "server.urls": "http://*:5000;http://*:8001", "environment": "Development" }
上面的配置中除了配置 server.urls ,也顺带配置了一下 environment (默认是Production)。
然后在 Program.cs 中使用 hosting.json 中的配置:
public class Program
{ public static void Main(string[] args)
{ var config = new ConfigurationBuilder()
.AddJsonFile("hosting.json", optional: true)
.Build(); var host = new WebHostBuilder() .UseUrls("http://*:5000")
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup<Startup>() .UseConfiguration(config)
.Build();
host.Run();
}
}
注意一定要把上面的 .UseUrls() 删除,不然 hosting.json 中的配置会被它覆盖。
另外还要注意,在 project.json 中除了在 "publishOptions" 中添加 "hosting.json" ,还要在 "buildOptions" -> "copyToOutput" 中添加 "hosting.json",不然运行时在 bin 文件夹会找不到 hosting.json 文件。
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true, "copyToOutput": "hosting.json"},
"publishOptions": {
"include": [ "hosting.json"
]
}
最后用 dotnet run 命令运行站点,体验一下实际效果。
Hosting environment: Development Content root path: C:\Dev\Cnblogs.WebDemo Now listening on: http://*:5000 Now listening on: http://*:8001 Application started. Press Ctrl+C to shut down.
.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注
以上是关于用"hosting.json"配置ASP.NET Core站点的Hosting环境的主要内容,如果未能解决你的问题,请参考以下文章
用 "\\" 和 "." 分割字符串使用正则表达式 [重复]