我有一個節點js腳本在我的web角色中運行Socket.io實現。我可以找到如何啓動節點js腳本的唯一方法是在命令提示符下運行它,所以我在web角色中創建了一個後臺任務,它在命令提示符下運行腳本。以編程方式從命令提示符啓動節點js腳本
我將節點js文件,cmd.exe和節點模塊文件的「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中。從這裏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腳本樣本蔚藍節點JS應用。我想這跟我上面寫的重寫代碼有關。我應該做些什麼改變才能讓App.js在啓動時運行,並且仍然能夠訪問我的其他html視圖?
感謝
它是app.js的標準是小寫,這是如何保存你的文件? – 2013-03-12 13:12:58
是嗎?我將它保存爲App.js.我會改變這一點,並嘗試 – Bitsian 2013-03-12 13:28:55
對不起,這是所有突出的,http://stackoverflow.com/questions/8173232/make-exe-from-node-js-app第二個和第三個解決方案可能有所幫助,但任何進一步建議將是一個猜測 – 2013-03-12 13:47:11