使用JeringTech/Javascript.NodeJS在.NET API调用Node执行JS遇500错误求助
问题分析与解决方案
报错System.Net.Sockets.SocketException (11001): No such host is known表明你的.NET API无法解析Node.js子进程的主机地址,进而无法建立跨进程通信——Jering.Javascript.NodeJS库通过启动Node.js子进程并基于HTTP完成调用,核心问题出在本地网络解析或通信拦截上。结合代码曾在其他机器正常运行,以下是针对性排查步骤:
1. 验证localhost解析正确性
- 打开命令行执行
ping localhost,确认返回地址为127.0.0.1。 - 检查系统hosts文件(路径:
C:\Windows\System32\drivers\etc\hosts),确保存在以下条目:
若缺失,添加后保存(需管理员权限)。127.0.0.1 localhost ::1 localhost
2. 强制Jering库使用127.0.0.1而非localhost
绕过localhost解析问题,直接指定IP地址。在项目的服务配置代码(Program.cs/Startup.cs)中添加:
// 依赖注入方式配置 builder.Services.AddNodeJS(options => { options.HttpServerOptions.Host = "127.0.0.1"; }); // 若继续使用StaticNodeJSService StaticNodeJSService.Configure(options => { options.HttpServerOptions.Host = "127.0.0.1"; });
3. 排查防火墙/安全软件拦截
当前机器的防火墙、杀毒软件或端点安全工具可能拦截了本地进程间的HTTP通信:
- 临时关闭防火墙测试,若问题解决,添加.NET API进程和Node.js进程的本地通信允许规则。
- 检查安全软件的“应用控制”或“网络保护”模块,确认未阻止相关进程。
4. 确认Node.js环境可用性
- 执行
node -v确认Node.js已安装且加入系统环境变量。 - 若Node.js路径未被正确识别,可在配置中手动指定:
builder.Services.AddNodeJS(options => { options.NodeJSProcessOptions.NodeExecutablePath = @"C:\Program Files\nodejs\node.exe"; // 替换为你的Node.js实际路径 });
5. 禁用全局代理干扰
若系统配置了全局HTTP代理,可能导致本地请求被错误转发:
builder.Services.AddNodeJS(options => { options.HttpClientHandler = new HttpClientHandler { UseProxy = false, Proxy = null }; });
内容的提问来源于stack exchange,提问作者Bruno Portugal
相关产品推荐
相关产品推荐

