问题:
问题场景
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服务器