Blazor ElectronNET应用在macOS加载localhost失败:ERR_CONNECTION_REFUSED
解决方案
问题根源分析
- 启动时序不匹配:macOS环境下ASP.NET Core服务启动速度慢于Electron窗口初始化,导致窗口尝试加载
http://localhost:8002/时服务尚未就绪,触发ERR_CONNECTION_REFUSED错误;刷新时服务已完成启动,因此页面能正常加载。 - 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
相关产品推荐
相关产品推荐

