.NET Core 8 API部署后客户端浏览器访问出现ERR_CONNECTION_RESET问题求助
解决.NET Core 8 WebAPI在IIS 8上外部客户端访问的ERR_CONNECTION_RESET问题
核心排查点与修复方案
1. 端口防火墙未开放
服务器Windows防火墙或网络防火墙大概率没开放4000端口的HTTPS入站规则。.NET Core 8的端口绑定逻辑和.NET 7存在差异,旧环境的规则不一定适配新版本。
- 操作步骤:
- 打开Windows Defender防火墙 → 高级设置
- 新建入站规则,选择「端口」类型
- 指定HTTPS端口4000,允许所有连接类型
- 应用规则到域、专用、公网环境
2. 自签名证书未被客户端信任
外部客户端浏览器未导入服务器的自签名SSL证书,导致HTTPS连接被直接中断(部分浏览器不会弹出证书错误提示,直接返回连接重置)。服务器本地浏览器因已导入证书所以能正常访问。
- 操作步骤:
- 在服务器上导出自签名证书为.cer格式
- 发送给外部客户端,在浏览器的证书管理中,将证书导入到「受信任的根证书颁发机构」
3. .NET Core 8 IIS托管配置不兼容
.NET Core 8对IIS托管模块的要求比.NET 7更高,需检查web.config配置及托管模块版本:
- 确保web.config中
AspNetCoreModuleV2已正确配置,且启用日志排查启动问题:<system.webServer> <handlers> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /> </handlers> <aspNetCore processPath="dotnet" arguments=".\YourApi.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" /> </system.webServer> - 安装.NET Core 8对应的Hosting Bundle,Windows Server 2012的IIS 8默认模块版本可能不兼容.NET 8,需更新到最新托管模块。
4. 混合内容拦截
Angular客户端用HTTP协议,API用HTTPS,属于混合内容场景,现代浏览器会严格拦截跨协议请求,外部客户端的安全策略比服务器本地更严格,因此出现连接重置。
- 修复方案:将Angular客户端也部署为HTTPS,使用与API相同的SSL证书,统一协议后即可解决该问题。
5. UseUrls配置冲突
启动时手动指定UseUrls("https://*:4000")会和IIS的端口转发逻辑冲突,IIS托管的.NET Core应用无需手动绑定端口,应由IIS处理协议与端口路由。
- 操作步骤:移除
Program.cs中的UseUrls配置,确保IIS站点的HTTPS绑定已设置为4000端口并关联正确的SSL证书。
内容的提问来源于stack exchange,提问作者Jeze
相关产品推荐
相关产品推荐

