sunny123456

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  1796 随笔 :: 22 文章 :: 24 评论 :: 226万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

.net core Kestrel宿主服务器自定义监听端口配置
http://t.zoukankan.com/williamwsj-p-9645095.html

  • .net core Kestrel宿主服务器自定义监听端口配置

    在.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。这下明白了吧!

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

  • posted on   sunny123456  阅读(157)  评论(0编辑  收藏  举报
    相关博文:
    阅读排行:
    · DeepSeek 开源周回顾「GitHub 热点速览」
    · 物流快递公司核心技术能力-地址解析分单基础技术分享
    · .NET 10首个预览版发布:重大改进与新特性概览!
    · AI与.NET技术实操系列(二):开始使用ML.NET
    · .NET10 - 预览版1新功能体验(一)
    点击右上角即可分享
    微信分享提示