ASP.NET Core项目可正常运行API但网站访问遭连接拒绝
问题排查与解决方案
核心问题:端口未被监听
你当前启动的是ASP.NET_Core_Web_API调试Profile,它仅监听API配置的7103(HTTPS)和5182(HTTP)端口,而launchSettings.json中IIS Express段配置的25433/44313端口并未被当前启动的实例监听,因此访问时出现ERR_CONNECTION_REFUSED。
解决方案
方案1:合并端口配置(推荐,单实例监听多端口)
修改ASP.NET_Core_Web_API Profile的applicationUrl,将网站的HTTP/HTTPS端口加入,让单应用同时监听所有需要的端口:
"ASP.NET_Core_Web_API": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, "launchUrl": "swagger", "applicationUrl": "https://localhost:7103;http://localhost:5182;https://localhost:44313;http://localhost:25433", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } }
修改后重新启动该Profile,所有端口都会被监听,API和网站均可正常访问。
方案2:切换到IIS Express Profile启动
在Visual Studio的调试启动项中,选择IIS Express作为启动Profile,此时应用会监听25433(HTTP)和44313(HTTPS)端口,同时API也能通过这两个端口访问(因为是同一个应用实例)。
额外验证
你的Program.cs已正确配置MVC路由(MapDefaultControllerRoute())和API路由(MapControllers()),只要存在对应的MVC控制器(如HomeController及Index方法),网站即可正常响应。若后续出现404而非连接拒绝,需检查控制器是否存在或路由配置是否正确。
端口占用排查(可选)
若切换Profile后仍无法访问,可通过以下命令检查端口是否被其他程序占用:
netstat -ano | findstr :25433
若有结果,可根据PID结束占用进程,或修改launchSettings.json中的端口号。
内容的提问来源于stack exchange,提问作者Windgate
相关产品推荐
相关产品推荐

