2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 用quot;hosting.jsonquot;配置ASP.NET Core站点的Hosting环境

用quot;hosting.jsonquot;配置ASP.NET Core站点的Hosting环境

时间:2022-03-26 11:33:09

相关推荐

用quot;hosting.jsonquot;配置ASP.NET Core站点的Hosting环境

通常我们在 Prgram.cs 中使用硬编码的方式配置 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 服务器上部署多个站点造成麻烦,因为不同站点需要绑定不同的端口。除非你在开发时就已经约定好各个项目使用的端口,否则很容易在部署时遇到端口冲突问题,从而被迫修改代码。

如果能通过配置文件设置绑定的端口,这个问题就迎刃而解。 Core 中有没有提供相应的解决之道呢?带着这个问题,今天签出aspnet/Hosting的源码浏览一番,在SampleStartups 的StartupFullControl.cs中找到了答案:

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: DevelopmentContent root path: C:\Dev\Cnblogs.WebDemoNow listening on: http://*:5000Now listening on: http://*:8001Application started. Press Ctrl+C to shut down.

原文地址:/dudu/p/6233131.html

.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。