用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 中有没有提供相应的解决之道呢?带着这个问题,今天签出 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: 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.
【补充】ASP.NET Core 2.0 中的使用方法:
public class Program {public static void Main(string[] args){BuildWebHost(args).Run();}public static IWebHost BuildWebHost(string[] args){var config = new ConfigurationBuilder().AddJsonFile("hosting.json", optional: true).AddCommandLine(args).Build();return WebHost.CreateDefaultBuilder(args) .UseConfiguration(config).UseStartup<Startup>().Build();} }
转载于:https://www.cnblogs.com/dudu/p/6233131.html
用hosting.json配置ASP.NET Core站点的Hosting环境相关推荐
- 用quot;hosting.jsonquot;配置ASP.NET Core站点的Hosting环境
通常我们在 Prgram.cs 中使用硬编码的方式配置 ASP.NET Core 站点的 Hosting 环境,最常用的就是 .UseUrls() . public class Program { p ...
- Cenos7 部署asp.net core站点
系统版本 rpm -q centos-release --- centos-release-7-5.1804.el7.centos.x86_64 安装libicu yum install libunw ...
- 基于VS2017的Docker Support体检ASP.NET Core站点的Docker部署
最近在学习如何用 Docker 部署生产环境中的 ASP.NET Core 站点,作为一个 Docer 新手,从何处下手更容易入门呢?一开始就手写 Docker 配置文件(Docfile, docke ...
- DataProtection设置问题引起不同ASP.NET Core站点无法共享用户验证Cookie
这是这两天ASP.NET Core迁移中遇到的一个问题.2个ASP.NET Core站点(对应于2个不同的ASP.NET Core Web应用程序),2个站点都可以登录,但在其中任1个站点登录后,在当 ...
- .NET跨平台之旅:将QPS 100左右的ASP.NET Core站点部署到Linux服务器上
天下午我们将生产环境中一个单台服务器 QPS(每秒请求数)在100左右的 ASP.NET Core 站点部署到了 Linux 服务器上,这是我们解决了在 .NET Core 上使用 EnyimMemc ...
- Consul作为配置中心,配置Asp.Net Core应用程序 依据key/value动态更新
Consul作为配置中心,配置Asp.Net Core应用程序 依据key/value自动更新 https://github.com/wintoncode/Winton.Extensions.Conf ...
- ASP.NET Core macOS 环境配置 - ASP.NET Core 基础教程 - 简单教程,简单编程
ASP.NET Core macOS 环境配置 - ASP.NET Core 基础教程 - 简单教程,简单编程 原文:ASP.NET Core macOS 环境配置 - ASP.NET Core 基础 ...
- ASP.NET Core Windows 环境配置 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core Windows 环境配置 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Windows 环境配置 ASP.NET Core ...
- ASP.NET Core 新建项目 - macOS 环境 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 新建项目 - macOS 环境 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 新建项目 - macOS 环境 对于任何语言和 ...
最新文章
- [Jobdu] 题目1504:把数组排成最小的数
- java树 JTree实例(可动态添加节点)
- win 7 mysql 1067_win7系统登陆MySQL服务出现1067错误的解决方法
- 最长不重复子串python_python经典算法题:无重复字符的最长子串
- html表单实现ajax登陆,node.js+jQuery实现用户登录注册AJAX交互
- 关于爬取网易云全部评论的一些疑问
- 国家开放大学2021春1076常微分方程题目
- mysql union 别名报错_浅析mysqlunion和unionall
- 左对齐 latex_初学者关于Latex的一些总结(持续更新中...)
- 【FPGA黑金开发板】Verilog HDL那些事儿--串口模块(十一)
- python中id是什么意思_什么是python的id函数
- python生成首尾相连的字符串
- su - root 切换失败
- java中的build类_30 Java设计模式系列-建造者(Build)模式
- 以太坊 2.0 中的验证者经济模型,Part-1
- 别嫌工资少,高薪资的标准你符合几条
- set name utd8_ml utd 8机器学习数据的最新生命
- 【autojs】Auto.js Pro安卓QQ语音红包秒抢挂免费脚本源码
- cmd 查看端口占用并且结束进程【建议收藏】
- 【TensorFlow基础函数】tf.concat的用法
热门文章
- C# 启动外部程序的几种方法
- 一个GDIPlus的Bug -- OutofMemory异常
- android mediaplayer状态机
- ATT汇编语言与GCC内嵌汇编简介
- AWS攻略——使用S3托管静态网页
- 【opencv】ubuntu14.04上编译opencv-4.0.1 + opencv_contrib-4.0.1
- 【leetcode】力扣刷题(1):两数之和(Go、Python)
- 前锋 php 杭州,前锋php培训
- cssbefore图片大小_两小时学会CSS-before after 伪元素
- 联机分析处理系统与联机事务处理系统的区别和联系_混合事务分析处理“HTAP”的技术要点分析...