以编程方式从命令提示符启动node js脚本
本文关键字:node js 脚本 启动 命令提示符 编程 方式 | 更新日期: 2023-09-27 18:03:25
我有一个运行Socket的node js脚本。IO实现在我的web角色。我能找到的关于如何启动node js脚本的唯一方法是在命令提示符中运行它,所以我在web角色中创建了一个后台任务,在命令提示符中运行脚本。
我将node js文件,cmd.exe和node模块文件的"Copy To Output Directory"属性设置为"Copy If newer",它们正在bin文件夹中生成。如果我手动启动bin文件夹中的cmd.exe并运行命令"node App.js",它就会工作,socket所在的端口。IO正在监听,正在运行。但是当我像下面这样以编程方式运行命令时,它不起作用。
它不会抛出任何错误,所以我不知道它是否在我的代码问题,或者我们不能像这样启动节点js脚本。是否有办法查明命令是否正确执行?因为进程启动时没有打开CMD提示窗口。任何指导、建议或想法都是非常感谢的。由于
public class BackgroundThread
{
public static void Start()
{
var appRoot = Path.Combine(Environment.GetEnvironmentVariable("RoleRoot") + @"'", @"approot");
ProcessStartInfo psi = new ProcessStartInfo();
psi.CreateNoWindow = false;
psi.FileName = Path.Combine(appRoot, "bin", "cmd.exe");
psi.Arguments = "node app.js";
psi.UseShellExecute = false;
psi.WorkingDirectory = Path.Combine(appRoot, "bin");
try
{
Process p = Process.Start(psi);
}
catch (Win32Exception ex)
{
Console.WriteLine(ex.ToString());
Console.WriteLine(ex.StackTrace);
Console.WriteLine(ex.Source);
Console.WriteLine(ex.ErrorCode);
}
}
}
编辑:原来iisnode可以处理一切,我只需要在web.config中重写代码。从这里的示例azure nodejs应用程序http://www.windowsazure.com/en-us/develop/nodejs/tutorials/getting-started/我得到了这个重写代码
<rewrite>
<rules>
<clear />
<rule name="app" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
<match url="iisnode.+" negate="true" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="App.js" />
</rule>
</rules>
</rewrite>
它会自动启动App.js,但它会将我所有的视图重定向到App.js脚本。我想这与我上面写的重写代码有关。我应该做些什么改变来让App.js在启动时运行,仍然能够访问我的其他html视图?
谢谢
一种方法是将所有静态内容放在特定文件夹中,并添加重写规则以绕过重定向到app.js
'
<!-- All other URLs are mapped to the Node.js application entry point -->
<rule name="DynamicContent">
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True"/>
</conditions>
<action type="Rewrite" url="app.js"/>
</rule>
`
在web角色中运行node.js的最佳方式是使用iisnode -这是一个iis http模块,它将iis请求重定向到node.exe进程,允许您在node.js应用程序中使用iis进程管理。
您可以使用windows azure powershell或azure网站轻松做到这一点。详见http://www.windowsazure.com/en-us/develop/nodejs/tutorials/getting-started/