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

ASP.NET Core Web API运行遇500错误及Kestrel连接异常求助

问题分析与解决:ASP.NET Core Web API 500错误(SocketException 10061)

错误核心信息

运行ASP.NET Core Web API时出现500内部服务器错误,输出窗口抛出以下异常:

Microsoft.AspNetCore.Server.Kestrel: Error: Connection id "0HN1QQK58NPAJ", Request id "0HN1QQK58NPAJ:00000001": An unhandled exception was thrown by the application.

System.Net.Http.HttpRequestException: No connection could be made because the target machine actively refused it. (127.0.0.1:10809)
---> System.Net.Sockets.SocketException (10061): No connection could be made because the target machine actively refused it.

错误页面截图:
错误页面截图

代码片段

Program.cs代码:

var builder = WebApplication.CreateBuilder(args);
    
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddNodeServices();

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
  
}
ArvanStorage_ehsan_simin.AWSAccessKey = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build().GetSection("ArvanStorage:AWSAccessKey").Value;

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();

问题原因

异常中的127.0.0.1:10809是NodeServices默认尝试连接的Node.js服务端口,出现"连接被主动拒绝"的原因集中在以下几点:

  • 本地未安装Node.js,或Node.js未配置到系统环境变量,导致ASP.NET Core无法启动Node.js进程。
  • NodeServices启动Node.js进程失败,端口10809未被监听,或进程启动后直接崩溃。
  • 代码中误加了NodeServices引用但实际未使用,框架仍尝试连接不存在的Node服务。

解决方法

方法1:移除未使用的NodeServices

如果你的Web API不需要和Node.js服务交互,直接删除builder.Services.AddNodeServices();这一行,重新编译运行即可。这是最直接的修复方式,很多场景下开发者会误加该服务引用但未实际使用。

方法2:正确配置NodeServices(若确实需要使用)

如果业务依赖Node.js服务,按以下步骤操作:

  • 确保本地已安装Node.js,执行node -v验证安装状态,若未安装需先安装并将其路径添加到系统环境变量PATH。
  • 自定义NodeServices配置,避免端口冲突或启动失败:
    builder.Services.AddNodeServices(options =>
    {
        // 指定Node.js可执行文件路径(环境变量未配置时使用)
        options.NodePath = @"C:\Program Files\nodejs\node.exe";
        // 关闭调试模式,避免额外启动开销
        options.LaunchWithDebugging = false;
        // 可根据需求设置工作目录、超时时间等其他参数
    });
    
  • 检查关联的Node.js脚本,确保无语法错误或运行时异常,避免Node进程启动后崩溃。

方法3:检查端口占用情况

使用命令行工具排查10809端口是否被其他进程占用:

  • Windows:执行netstat -ano | findstr :10809,若有结果,用taskkill /PID <进程ID> /F终止占用进程。
  • Linux/macOS:执行lsof -i :10809,然后用kill -9 <进程ID>终止占用进程。

额外优化建议

代码中读取配置的方式可简化,无需重新构建ConfigurationBuilder,直接使用已有的builder.Configuration:

ArvanStorage_ehsan_simin.AWSAccessKey = builder.Configuration.GetSection("ArvanStorage:AWSAccessKey").Value;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 14:15:18