You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio运行Angular+.NET5+Electron.NET出现ERR_CONNECTION_REFUSED错误

问题根因

你的错误和IIS没有任何关系,Electron.Net运行时本身内置Kestrel作为后端服务,完全不需要依赖IIS,出现ERR_CONNECTION_REFUSED是以下几个配置问题导致的:

  • 前后端端口不匹配:IIS Express运行时后端端口是提前配置好的,Electron模式下Kestrel默认监听随机端口,你的Angular前端硬写了IIS的端口作为API请求地址,自然无法访问
  • HTTPS重定向冲突:你在Startup中全局开启了HTTPS重定向,但是Kestrel默认没有配置HTTPS监听端口,HTTP请求跳转后找不到对应端口就会被拒绝
  • 路由规则冲突:你注释了带/api前缀的接口路由规则,部分API请求路径和Angular前端路由重合,导致请求被转发到前端而没有到后端Controller
  • Angular开发代理失效:IIS模式下你大概率使用了Angular的代理配置转发API请求,Electron运行时不会加载这个代理配置,直接请求就会失败
解决方案

按照以下步骤修改配置即可正常运行:

  1. 限制HTTPS重定向的生效范围
    开发环境下不需要HTTPS,修改Startup.cs的Configure方法,把HTTPS重定向逻辑放到生产环境判断里:
// 把原来的app.UseHttpsRedirection();替换成下面的逻辑
if (!env.IsDevelopment())
{
    app.UseHttpsRedirection();
    app.UseHsts();
}
  1. 固定Kestrel监听端口
    保证Electron运行时后端端口固定,修改Program.cs,在UseElectron后指定监听地址:
webBuilder.UseStartup<Startup>();
webBuilder.UseElectron(args);
webBuilder.UseUrls("http://localhost:5000"); // 端口可以自定义,只要不冲突即可
  1. 恢复API路由前缀配置
    放开你注释的API路由规则,把接口路径和前端页面路径区分开:
app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "api",
        pattern: "api/{controller}/{action}/{id?}");

    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller}/{action=Index}/{id?}");
});
  1. 修改前端API请求配置
    把Angular中所有API请求的基础地址改为相对路径,不要硬写端口,修改environment.ts配置:
export const environment = {
  production: false,
  apiBaseUrl: '/api' // 所有接口请求都用/api作为前缀,自动匹配当前服务的地址和端口
};

所有配置修改完成后,Electron模式下运行就可以正常访问后端接口,最终打包后的应用会把Kestrel、Chromium、前后端代码全部整合,完全不需要依赖任何外部服务,符合你独立桌面应用的开发目标。

内容的提问来源于stack exchange,提问作者Jimmyt1988

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:48:03