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

2020-10-09 13:32发布

问题:

问题场景

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

回答1:

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

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

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



回答2:

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



回答3:

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

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