当前位置:  开发笔记 > 编程语言 > 正文

从C#应用程序启动Node.js服务器

如何解决《从C#应用程序启动Node.js服务器》经验,为你挑选了1个好方法。

我需要从C#应用程序启动Node.js服务器,这就像server.js在Node.js控制台中运行脚本一样简单.但是,我并不完全确定如何实现这一目标.

这是我到目前为止所研究的内容:

在Node.js安装中,有一个名为的文件C:\Program Files (x86)\nodejs\nodevars.bat,这是Node.js的命令提示符窗口.要启动服务器,我可能会使用以下步骤:

    执行nodevars.bat文件.

    SendKeys 到新的进程控制台窗口以启动服务器.

这种方法感觉有点脆弱.无法保证目标用户将Node.js安装在同一位置,同时向过程发送密钥可能不是理想的解决方案.

另一种方法可能是:

    编写一个执行的批处理文件nodevars.bat.

    从C#应用程序执行批处理文件.

这似乎是一种更好的方法.但是,这里唯一的问题是nodevars.bat在新的控制台窗口中打开.

那么对于问题,有没有办法可以使用node.js安装中内置的功能启动node.js服务器脚本?也许发送论据node.exe



1> Ben..:

如果要为多个用户(即服务器)提供服务,则可以使用os-service软件包并安装Windows服务.然后,您可以使用标准API启动和停止服务.

如果要将服务器作为"单一用途"服务器启动,即仅为当前用户服务,则os-service是错误的方法.(通常在使用此方法时,您将为要使用的服务指定唯一的端口,该端口仅供您的应用程序使用).

要从C#启动批处理文件或其他控制台应用程序而不显示控制台窗口,请使用标准方法,但请务必指定:

ProcessStartInfo psi = new ProcessStartInfo();
psi.UseShellExecute = false;   // This is important
psi.CreateNoWindow = true;     // This is what hides the command window.
psi.FileName = @"c:\Path\to\your\batchfile.cmd";
psi.Arguments = @"-any -arguments -go Here";   // Probably you will pass the port number here
using(var process = Process.Start(psi)){
    // Do something with process if you want.
}


这对我有用.我没有使用批处理文件,而是执行`node.exe`并将路径传递给我的`server.js`文件作为参数.`node.exe`应用程序自动启动服务器,这是一件很棒的事情.
推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有