用quot;hosting.jsonquot;配置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.

原文地址:http://www.cnblogs.com/dudu/p/6233131.html


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/327248.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序员常用网站收藏[定期更新]——csdn博客

网站收藏【定期更新】 资源类1.开源中国社区3.CodePlayer专注于编程技术分享4.源码之家5.阿里云6.免费logo在线制作, 标志设计, 公司logo设计7.搜素材 - 站酷 (ZCOOL)8.站长素材97.建站资源_伊思娜资源网-2014国内最全|免费空间|域名|网赚|免费cmcc|网络电话|网站优化|服装搭配…

No primary or default constructor found for interface java.util.List

https://blog.csdn.net/qq_39723363/article/details/84379685 springboot No primary or default constructor found for interface java.util.List 夏天吹雪 2018-11-23 11:31:12 67570 收藏 6 分类专栏&#xff1a; 工作随记 版权 RequestParam(value "content&…

论:开发者信仰之“天下IT是一家“(Java .NET篇)

比尔盖茨公认的IT界领军人物&#xff0c;打造了辉煌一时的PC时代。 2008年&#xff0c;史蒂夫鲍尔默接替了盖茨的工作&#xff0c;成为微软公司的总裁。 2013年他与微软做了最后的道别。 2013年以后&#xff0c;我才真正看到了微软的变化。尤其是它的“云优先&#xff0c;移动优…

配置高性能ElasticSearch集群的9个小贴士

Loggly服务底层的很多核心功能都使用了ElasticSearch作为搜索引擎。就像Jon Gifford&#xff08;译者注&#xff1a;Loggly博客作者之一&#xff09;在他近期关于“ElasticSearch vs Solr”的文章中所述&#xff0c;日志管理在搜索技术方面产生一些粗暴的需求&#xff0c;坚持下…

MyBatis-Plus Wrapper条件构造器查询大全

https://blog.csdn.net/weixin_38111957/article/details/91447509 MyBatis-Plus Wrapper条件构造器查询大全 IT贱男 2019-06-11 16:50:44 36133 收藏 66 分类专栏&#xff1a; Mybatis-Plus 版权 码农必备linux技能 本专栏主要从系统安装、入门命令讲解&#xff0c;会不…

.NET异常设计原则

异常是使用.NET时必然会遇到的问题&#xff0c;但是&#xff0c;有太多的开发人员没有从API设计的角度考虑这个问题。在大部分工作中&#xff0c;他们自始至终都知道需要捕获什么异常以及哪些异常需要写入全局日志。如果你设计了可以让你正确使用异常的API&#xff0c;则可以显…

java 百度经纬度 转换为 高德经纬度 谷歌

https://lbs.amap.com/api/webservice/guide/api/convert/#convert https://restapi.amap.com/v3/assistant/coordinate/convert?locations116.481499,39.990475&coordsysgps&outputxml&key<用户的key> https://console.amap.com/dev/key/app https://conso…

方法的重写VS重载

方法的重写&#xff08;override&#xff09; 方法的重写 子类从父类中继承方法&#xff0c;有时&#xff0c;子类需要修改父类中定义的方法的实现&#xff0c;这称做方法的重写(method overriding)。“重写”的概念与“重载”相似&#xff0c;它们均是Java“多态”的技术之一&…

权衡微服务

很多开发团队已经认识到 微服务架构比单体架构更优越。但是也有其他团队感觉到这是一种消弱生产力的负担。就像任何软件架构&#xff0c;微服务架构同样有利弊。为了能做出一个明智的选择&#xff0c;你必须了解这些应用并将它们运用到你特定的环境中。 微服务的优势 具有边界的…

使用IDM下载,不适用默认浏览器下载

google浏览器是不能够安装的除非有v*p*n&#xff08;&#xff09; Firefox浏览器可以安装js脚本 推荐使用 1 google 扩展 IDMan628 扩展程序里面加 IDMGCExt.crx 2 扩展Tampermonkey 加Tampermonkey.crx 3 点击Tampermonkey 的仪表盘 右上角加按钮 百度网盘直接下载助手…

ASP.NET Core 中的那些认证中间件及一些重要知识点

前言 在读这篇文章之间&#xff0c;建议先看一下我的 ASP.NET Core 之 Identity 入门系列&#xff08;ASP.NET Core 之 Identity 入门&#xff08;一&#xff09;&#xff0c;ASP.NET Core 之 Identity 入门&#xff08;二&#xff09;&#xff0c;ASP.NET Core 之 Identity 入…

mybatis-plus 错误java.lang.NoClassDefFoundError: org/apache/velocity/context/Context

https://blog.csdn.net/qq_39609151/article/details/82855305 mybatis-plus 错误java.lang.NoClassDefFoundError: org/apache/velocity/context/Context Murphy_fly 2018-09-26 16:41:55 27168 收藏 15 分类专栏&#xff1a; 框架 版权 使用mybatis-plus自动生成文件的时…

向上类型转换VS向下类型转换

子类转换成父类时的规则: 将一个父类的引用指向一个子类的对象&#xff0c;称为向上转型(upcasting)&#xff0c;自动进行类型转换。此时通过父类引用调用的方法是子类覆盖或继承父类的方法&#xff0c;不是父类的方法。 此时通过父类引用变量无法调用子类特有的方法&#xff…

.NET 使用 RabbitMQ 图文简介

前言 最近项目要使用RabbitMQ&#xff0c;园里里面已经有很多优秀的文章&#xff0c;Rabbitmq官网也有.net实例。这里我尝试下图文并茂之形式记录下使用的过程。 安装 RabbitMQ是建立在erlang OTP平台下&#xff0c;因此在windows下需要下载并安装以下两个组件&#xff1a; 1. …

Springboot+MyBatis-plus+postgresSQL 的整合

https://blog.csdn.net/xuxiannian/article/details/99625085 SpringbootMyBatis-pluspostgresSQL 的整合 禛陌 2019-08-15 12:20:10 6752 收藏 7 分类专栏&#xff1a; 技术相关 文章标签&#xff1a; SpringbootMyBatis-pluspostgresSQL 版权 磨叨一下 MyBatis-plus 请…

使用Senparc.Weixin.WxOpen开发高可用的微信小程序

Senparc.Weixin SDK介绍 Senparc.Weixin SDk是目前.net平台上使用率最高的微信SDK&#xff0c;除硬件平台暂未发布以外覆盖了所有微信平台模块&#xff0c;自2013年免费开源起已经持续更新了4年&#xff0c;是GitHub上目前Star和Fork数最多的中国C#开源项目。 目前大多数模块都…