ASP.NET Core 8与Angular Vite代理报错:connect ECONNREFUSED 127.0.0.1:40443
问题重现
开发ASP.NET Core 8 + Angular(Vite)项目时,配置Vite代理转发请求到ASP.NET Core API的/weatherforecast端点,终端报错:
[vite] http proxy error: /weatherforecast Error: connect ECONNREFUSED 127.0.0.1:40443 at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)
已排查:ASP.NET Core已运行、SSL证书配置正确、无防火墙阻塞、HTTPS环境变量设置正常。
可行的解决方向
1. 修正Vite代理配置格式与参数
Angular + Vite项目中,代理配置需直接写入vite.config.ts的server.proxy字段,同时添加changeOrigin参数解决主机头校验问题:
import { defineConfig } from 'vite'; import angular from '@vitejs/plugin-angular'; export default defineConfig({ plugins: [angular()], server: { proxy: { '/weatherforecast': { target: 'https://127.0.0.1:40443', secure: false, changeOrigin: true // 修改请求头的Host为目标服务器地址,适配ASP.NET Core的主机校验 } } } });
2. 确认ASP.NET Core实际监听的地址与端口
检查ASP.NET Core启动日志,确认Now listening on:行包含https://127.0.0.1:40443。若日志显示监听localhost而非127.0.0.1,将代理目标改为https://localhost:40443尝试。
同时查看Properties/launchSettings.json中的applicationUrl配置,确保存在对应端口的HTTPS地址:
"applicationUrl": "https://127.0.0.1:40443;http://127.0.0.1:50443"
3. 用HTTP端口验证连通性
暂时绕过HTTPS问题,将代理目标改为ASP.NET Core的HTTP端口(如上述示例的50443),修改Vite配置:
'/weatherforecast': { target: 'http://127.0.0.1:50443', changeOrigin: true }
若HTTP代理正常,说明问题出在HTTPS证书或SSL配置上,可重新生成并信任ASP.NET Core开发证书:
dotnet dev-certs https --clean dotnet dev-certs https --trust
4. 验证端口实际连通性
在PowerShell中执行命令,测试端口是否真的可访问:
Test-NetConnection 127.0.0.1 -Port 40443
若结果显示TcpTestSucceeded: False,说明ASP.NET Core未正确监听该端口,需检查项目启动配置或重启服务。
5. 排查ASP.NET Core的CORS配置
虽然代理本身会规避CORS,但如果ASP.NET Core的CORS策略限制了主机头,可能间接导致连接问题。开发环境下可临时配置允许任意来源:
builder.Services.AddCors(options => { options.AddPolicy("AllowAll", policy => { policy.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader(); }); }); app.UseCors("AllowAll");
内容的提问来源于stack exchange,提问作者Lesley

