首页 新闻 会员 周边 捐助

程序是如何接收并启动监听 IIS 站点设置的端口号的?

0
悬赏园豆:50 [已解决问题] 解决于 2020-10-09 13:49

问题场景

ASP.NET Core 应用程序部署到 IIS 某站点下, 设置该站点端口为 :8080, 程序是怎么接收到这个端口号并启动监听的呀? please show me the code/doc...thanks

taadis的主页 taadis | 菜鸟二级 | 园豆:211
提问于:2020-09-29 10:45
< >
分享
最佳答案
0

启动时会获取环境变量 ASPNETCORE_PORT 提供的对应信息作为端口号,

  • 本地开发时, 会读取 launchSettings.json 里对应环境变量作为端口号
  • 也可以通过添加命令行参数设置指定端口号
  • 部署到 IIS, ACNM 会设置环境变量 ASPNETCORE_PORT 的值, web.config 里也可以覆写该环境变量

换句话说,外部设置可控,但是我们的程序总要接收和处理此环境变量 ASPNETCORE_PORT 作为侦听的端口号即可.
这里有个 go 语言的实例 如何在 IIS 上部署 Go API?

taadis | 菜鸟二级 |园豆:211 | 2020-10-07 11:39
其他回答(2)
0

IIS 转发请求给 Kestrel ,推荐阅读 Web server implementations in ASP.NET Core

收获园豆:25
dudu | 园豆:31030 (高人七级) | 2020-09-29 10:50

那我现在托管的是非 ASP.NET Core 应用程序呢? 我想了解下 IIS 启动的时候分配的端口号, 程序是通过什么方式接收到的? 或者说 IIS 是通过上面方式把这个端口号传递给应用程序的.
我了解的常见的方式是 环境变量/命令行参数/编码指定. 但是在部署的 ASP.NET Core 应用程序中并没有看到任何相关的设置.

支持(0) 反对(0) taadis | 园豆:211 (菜鸟二级) | 2020-09-29 10:56

@taadis: 端口号与应用程序没有关系

支持(0) 反对(0) dudu | 园豆:31030 (高人七级) | 2020-09-29 11:05

@dudu: 我理解的是程序启动时会监听把持某个端口, 不然怎么提供服务? 所以不是很理解你说的端口号跟应用程序没有关系?

支持(0) 反对(0) taadis | 园豆:211 (菜鸟二级) | 2020-09-29 11:07

@taadis: 推荐阅读园子里的博文 ASP.NET Core 运行原理解剖[1]:Hosting

支持(0) 反对(0) dudu | 园豆:31030 (高人七级) | 2020-09-29 11:17
0

IIS是一个web服务器,充当一个宿主角色,其他的应用程序也可以充当宿主,比如WCF的宿主可以是 Windows 服务、COM+应用程序、WAS(Windows Activation Services,Windows进程激活服务)或IIS、Windows应用程序,或简单的控制台应用程序及任何.net程序。

如果你要探究IIS是如何进行端口监测的,可以研究下CassiniDev的源码,一个轻量级的web服务器

收获园豆:25
E行者 | 园豆:1761 (小虾三级) | 2020-09-29 11:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册