在.net core的web程序中,除了可以在项目中硬编码服务器的监听端口外,还可以在外部通过json文件配置。

方法如下:

第一步:在项目中新建一个名为Hosting.json的文件。当然,文件名可以随便取。然后在其中添加如下内容:

{
"server.urls": "http://*:8081"
}

8081就是我们需要监听的端口。如果需要监听多个端口,则可以用半角分号将配置数据隔开,如:"http://*:8081;http://*:8082;http://*:8083",这样程序可以同时监听8081/8082/8083端口。

第二步:修改项目的Program.cs文件的内容,如下所示:

通过以上两个步骤就可以实现外部文件配置服务器的监听端口。

为何如此神奇?我们只加载了一个配置文件就改掉了监听端口,server.urls可以更改为其他名称吗,比如改为host.urls?答案是不可以。

接下来我们谈谈为何要这样配置。

要想弄明白这个逻辑,就得从上面那个图片中的Build()方法讲起走,即IWebHostBuilder.Build()方法。该方法的源码如下:

其会通过webHost.Initialize();方法初始化WebHost。接下来进入webHost.Initialize();的源码,请看:

这样太简单了吧!不要急,让我们进入this.BuildApplication();的源码,请看:

该方法的源码有点多,我就不截全图了。关键看this.EnsureServer();这个方法。本次所要讨论的东西就在this.EnsureServer();这个方法中。

关键就在上面这张图片标红的代码中。如果系统找不到默认的配置,则会去找名为WebHost.DeprecatedServerUrlsKey的配置,并支持通过半角分号隔开的数据。

最后的关键点来了,请看:

WebHost.DeprecatedServerUrlsKey的硬编码就是server.urls。这下明白了吧!

当然,如果觉得上面那个麻烦,就在程序中使用硬编码吧。不过每次想更改监听端口的时候,就要去项目中发布一次,是不是觉得很麻烦呢?

最新文章

  1. ASP.NET MVC5----常见的数据注解和验证
  2. 【BZOJ】4002: [JLOI2015]有意义的字符串
  3. 解决表单(搜索框)回车的时候直接提交了表单不运行js的问题
  4. Ubuntu安装R及RStudio
  5. 反序列化存入数据库里面的session数据
  6. 关于js的兼容问题(小办法)!
  7. GC:垃圾回收器简介
  8. Color the ball HDOJ--1556
  9. Android高清巨图加载方案
  10. Spring-MongoDB 关键类的源码分析
  11. IntelliJ IDEA中 todo的使用
  12. 使用EHPC实现“完美并行”的高效批处理方案
  13. java自定义连接池
  14. SQL基础语法提纲
  15. mysql优化的21条经验(转)
  16. Redis使用认证密码登录
  17. [LeetCode] 67. Add Binary_Easy tag: String
  18. 超全面的JavaWeb笔记day11<JSP&Session&Cookie&HttpSession>
  19. DS18B20 crc 算法
  20. kafka配置文件中参数的限制

热门文章

  1. phpcms首页替换
  2. python全栈第一章
  3. C# AsyncCallback异步回调用法示例
  4. 杂谈迁移tomcat项目到docker,以及遇到的问题
  5. mybites
  6. 改变FileUpload文件上传控件的显示方式,选择文件后自动上传
  7. python 获取subprocess进程执行后返回值
  8. 用jQuery实现参数自定义的文字跑马灯效果
  9. R 语言 decostand() 函数
  10. .gitignore无效