IIS 10中主应用访问子.NET 6应用时URL莫名追加端口号问题
排查方向
1. 核对IIS站点与应用池核心配置
- 确认主WebForms站点的HTTPS绑定端口为标准443,排查是否存在站点级的额外绑定(比如绑定了44340端口),导致子应用继承错误端口
- 检查.NET6子应用的应用池是否设置为无托管代码(进程内托管的.NET Core应用必须配置此项),同时查看应用池高级设置中的"端口"字段,确认未被错误设置为44340
2. 检查.NET6应用的托管与启动配置
- 打开子应用的
web.config,查看<aspNetCore>节点的arguments参数,确认没有硬编码--urls=https://*:44340这类指定端口的配置 - 检查Program.cs代码,确认不存在强制绑定端口的逻辑,比如:
生产环境应移除这类硬编码,交由IIS管控端口builder.WebHost.UseUrls("https://*:44340");
3. 排查URL重写与规则继承问题
- 检查主WebForms站点的URL重写模块规则,确认是否存在错误追加44340端口到子应用请求的规则
- 可在子应用的
web.config中添加<clear />清除继承的重写规则,测试是否解决端口追加问题
4. 验证服务器网络与DNS配置
- 查看生产服务器的
hosts文件,确认baseurl.site没有被异常映射到带44340端口的地址 - 检查服务器前端的负载均衡/反向代理设备(如NGINX、硬件负载均衡器),确认转发请求时未错误追加端口
5. 检查请求拼接逻辑与中间件
- 查看WebForms主应用中调用.NET6端点的代码,确认是否存在误将调试端口(44340)当成生产端口拼接URL的逻辑
- 排查.NET6应用的Startup.cs,确认自定义中间件、Swagger等组件未修改请求的URL端口
6. 排查IIS ARR(应用程序请求路由)配置
- 若服务器启用了ARR,检查服务器场的端口映射配置,确认未将子应用请求转发到44340端口
- 查看ARR日志,定位请求转发过程中端口被修改的节点
内容的提问来源于stack exchange,提问作者dotnetdev_2009
相关产品推荐
相关产品推荐

