unix netcore 网站服务器,.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文件的内容,如下所示:

unix netcore 网站服务器,.net core Kestrel宿主服务器自定义监听端口配置_第1张图片

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

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

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

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

unix netcore 网站服务器,.net core Kestrel宿主服务器自定义监听端口配置_第2张图片

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

unix netcore 网站服务器,.net core Kestrel宿主服务器自定义监听端口配置_第3张图片

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

unix netcore 网站服务器,.net core Kestrel宿主服务器自定义监听端口配置_第4张图片

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

unix netcore 网站服务器,.net core Kestrel宿主服务器自定义监听端口配置_第5张图片

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

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

c301ed21e6f28692cc49f5b7982e5e46.png

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

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

unix netcore 网站服务器,.net core Kestrel宿主服务器自定义监听端口配置_第6张图片

asp.net core部署时自定义监听端口,提高部署的灵活性

另一种方式 https://www.cnblogs.com/stulzq/p/9039836.html 代码截图: 贴一下代码,方便复制: //默认端口号5000 string port = &quo ...

linux环境之监听端口配置

export JAVA_OPTS="-Dcom.sun.management.jmxremote.port=18950 -Dcom.sun.management.jmxremote.auth ...

asp.net core 二 Nginx Supervisor 负载,监听

ASP.NET Core负载均衡集群搭建(CentOS7+Nginx+Supervisor+Kestrel)          asp.net core在linux运行下,一但命令行退出 ...

Nginx 中 fastcgi_pass 监听端口 unix socket和tcp socket差

Nginx 中 fastcgi_pass 监听端口 unix socket和tcp socket差别   Nginx连接fastcgi的方式有2种:unix domain socket和TCP,Uni ...

xampp配置多个监听端口和不同的网站目录

1.配置Apache文件httpd.conf 打开xampp安装目录下的Apache->conf文件夹下的httpd.conf,用记事本打开 首先在Listen 80端口下添加其他监听端口: L ...

ORA-12541:TNS:无监听程序 配置Oracle Myeclipse无法连接上 花费一天时间解决掉的

背景:自己机子做oracle服务器,其他机子可以ping得通我的机子,但是jdbc就是连不上,后来用plsql连出现无监听程序.... 我昨天重新安装Oracle后,用PL/SQL Developer ...

linux用netstat查看服务及监听端口

[root@localhost ~]# netstat -nlp netstat命令各个参数说明如下: -t : 指明显示TCP端口 -u : 指明显示UDP端口 -l : 仅显示监听套接字(所谓套接 ...

Linux对外提供服务 网络操作 端口操作 1.开启服务监听端口 2.设置防火墙,放行访问端口的包 iptables&;netfilter 四表五链和通堵策略

主题: Linux服务器上软件提供服务 1.网络操作 2.端口操作 1.网络操作 本机必须能够ping通目标主机(本地虚拟机或者远程主机) 2.端口操作 1.开启服务监听端口 2.设置防火墙,放行访问 ...

SRS之监听端口的管理:RTMP

1. 监听端口管理的入口函数 监听端口的管理入口在 run_master 函数中,如下: int run_master() { ... if ((ret = _srs_server->liste ...

随机推荐

HttpClientUtil [使用apache httpclient模拟http请求]

基于httpclient-4.5.2 模拟http请求 以get/post方式发送json请求,并获取服务器返回的json -------------------------------------- ...

C语言入门(8)——形参与实参

对于带参数的函数,我们需要在函数定义中指明参数的个数和每个参数的类型,定义参数就像定义变量一样,需要为每个参数指明类型,并起一个符合标识符命名规则的名字.例如: #include

java反射机制 + Method.invoke解释 getMethod + 反射理解

功能: 通过读取另一个Dll去创建一个控件(Form,Button,TextBox,DataGridView),然后对当中一些属性进行检查. 创建控件的大致流程是,Assembly->Modul ...

Mysql 查询缓存总结

Mysql 查询缓存总结 MySQL查询缓存解释 缓存完整的SELECT查询结果,也就是查询缓存.保存查询返回的完整结果.当查询命中该缓存,mysql会立刻返回结果,跳过了解析.优化和执行阶段, 查询 ...

C#枚举的简单使用

枚举这个名词大家都听过,很多小伙伴也使用过, 那么枚举在开发中能做什么,使用它后能给程序代码带来什么改变,为什么用枚举. 各位看官且坐下,听我一一道来. 为什么使用枚举? 1.枚举能够使代码更加清晰, ...

python基础一 ------如何根据字典值对字典进行";排序";

需求:{姓名:成绩} 的字典,按成绩进行排序 方法一:转化为元组,(91,"张三")的形式 ,用sorted()函数进行排序 方法二 :设置sorted() 中key的参数的值 # ...

maven构建SSM框架中pom.xml文件配置

你可能感兴趣的:(unix,netcore,网站服务器)