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

Blazor ElectronNET应用在macOS加载localhost失败:ERR_CONNECTION_REFUSED

解决方案

问题根源分析

  1. 启动时序不匹配:macOS环境下ASP.NET Core服务启动速度慢于Electron窗口初始化,导致窗口尝试加载http://localhost:8002/时服务尚未就绪,触发ERR_CONNECTION_REFUSED错误;刷新时服务已完成启动,因此页面能正常加载。
  2. HTTPS重定向配置缺失:开发环境未明确指定HTTPS端口,HttpsRedirectionMiddleware无法自动识别重定向目标端口,抛出警告信息。

具体修复步骤

1. 调整窗口创建时机,等待服务启动完成

将Electron窗口的创建逻辑移至ASP.NET服务启动之后,确保服务完全就绪再加载页面。修改后的完整代码如下:

using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Web;
using ElectronNET.API;
using ElectronNET.API.Entities;

var builder = WebApplication.CreateBuilder(args);

// 服务注册逻辑保留
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor().AddCircuitOptions(options => { options.DetailedErrors = true; });
builder.Services.AddDevExpressBlazor();
builder.Services.AddElectron();
builder.Services.Configure<DevExpress.Blazor.Configuration.GlobalOptions>(options => {
    options.BootstrapVersion = DevExpress.Blazor.BootstrapVersion.v5;
});
builder.WebHost.UseWebRoot("wwwroot");
builder.WebHost.UseStaticWebAssets();
builder.WebHost.UseElectron(args);

var app = builder.Build();

// 请求管道配置
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

// 开发环境禁用HTTPS重定向,直接消除警告
if (!app.Environment.IsDevelopment())
{
    app.UseHttpsRedirection();
}

app.UseStaticFiles();
app.UseRouting();

app.MapBlazorHub();
app.MapFallbackToPage("/_Host");

// 先启动ASP.NET服务,再创建Electron窗口
await app.StartAsync();

var browserWindowOptions = new BrowserWindowOptions
{
    AutoHideMenuBar = true
};

var browserWindow = await Electron.WindowManager.CreateWindowAsync(browserWindowOptions);

await app.WaitForShutdownAsync();

2. 可选:保留HTTPS重定向并指定端口

若开发环境需要保留HTTPS重定向功能,可通过以下方式明确配置端口:

  • 在项目Properties/launchSettings.json中添加环境变量:
    "profiles": {
      "ElectronNET App": {
        "environmentVariables": {
          "ASPNETCORE_ENVIRONMENT": "Development",
          "ASPNETCORE_HTTPS_PORT": "5001"
        }
      }
    }
    
  • 或在代码中直接指定服务地址:
    builder.WebHost.UseUrls("http://localhost:8002", "https://localhost:5001");
    

额外验证项

  • 执行lsof -i :8002命令检查macOS上8002端口是否被其他进程占用,若有则终止对应进程。
  • 确认ElectronNET版本与当前使用的ASP.NET Core版本兼容(例如ElectronNET v23.x适配.NET 7/8)。

内容的提问来源于stack exchange,提问作者PPL-Ryan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:39:34