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

如何通过Node.js访问运行中C#可执行程序的数据?

问题解决:Node.js与本地C#程序的HTTP数据交互

核心问题定位

你之前的http.request代码存在两个致命错误,导致请求未正常发送:

  1. req.end是函数,必须加括号调用req.end(),否则请求不会被提交
  2. 模板字符串用了单引号,'STATUS:${res.statusCode}'无法解析变量,需改成反引号

修复后的原生http模块代码

先确保导入http模块,再完善请求逻辑(包含数据接收、错误处理):

const http = require('http'); // 必须先导入http模块

function getTestData02B(callback) {
  const req = http.request('http://192.168.1.222/ListAlarms.html', (res) => {
    let responseData = '';

    // 分段接收响应数据
    res.on('data', (chunk) => {
      responseData += chunk;
    });

    // 响应接收完成,返回数据
    res.on('end', () => {
      console.log(`STATUS: ${res.statusCode}`);
      callback(null, responseData);
    });
  });

  // 监听请求错误(比如连接失败、超时)
  req.on('error', (err) => {
    console.error('调用C#服务出错:', err);
    callback(err, null);
  });

  // 必须调用end()发送请求
  req.end();
}

更简洁的替代方案:用axios简化请求

原生http模块写法繁琐,推荐用axios库,处理异步和错误更直观:

  1. 安装axios:
npm install axios
  1. 修改homeController.js中的getTest02B方法:
const axios = require('axios');

exports.getTest02B = async (req, res) => {
  console.log("in exports.getTest02B");
  displayInformation(req.url, "URL");
  displayInformation(req.method, "METHOD");
  displayEmptyLine();

  try {
    // 直接发起GET请求
    const response = await axios.get('http://192.168.1.222/ListAlarms.html');
    console.log(`STATUS: ${response.status}`);
    // 将C#返回的数据转发给前端
    res.send(response.data);
  } catch (error) {
    console.error('请求C#服务失败:', error.message);
    // 返回错误信息给前端
    res.status(500).send(`获取数据失败: ${error.message}`);
  }
};

额外排查点

如果修复后仍无响应,检查以下内容:

  • 确认C#程序的HTTP服务是否绑定了0.0.0.0或局域网IP,而非仅localhost(若Node.js和C#在同一机器,可尝试用http://localhost:端口/ListAlarms.html)
  • 检查系统防火墙是否拦截了Node.js对C#服务端口的请求
  • 确认C#服务是否需要特定请求头(比如Content-Type),浏览器自动携带的头Node.js可能未添加,可通过请求配置补充(axios可通过headers参数添加)
  • 查看C#程序的调试日志,确认是否收到Node.js的请求,以及返回的状态码和内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 01:40:22