2013-03-12 87 views
0

我有一個節點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視圖?

感謝

+0

它是app.js的標準是小寫,這是如何保存你的文件? – 2013-03-12 13:12:58

+0

是嗎?我將它保存爲App.js.我會改變這一點,並嘗試 – Bitsian 2013-03-12 13:28:55

+0

對不起,這是所有突出的,http://stackoverflow.com/questions/8173232/make-exe-from-node-js-app第二個和第三個解決方案可能有所幫助,但任何進一步建議將是一個猜測 – 2013-03-12 13:47:11

回答

0

在Web角色運行的node.js的最好方法是使用iisnode - 這是一個IIS HTTP模塊,IIS重定向請求到node.exe過程,讓您使用IIS進程管理與node.js應用程序。

您可以使用windows azure powershell或azure網站輕鬆完成此操作。詳情請參見http://www.windowsazure.com/en-us/develop/nodejs/tutorials/getting-started/

+0

嘿,我已編輯我的問題,你可以相應地更新你的答案。非常感謝 – Bitsian 2013-03-13 13:53:49

0

一種方式做,這將是把所有的靜態內容在一個特定的文件夾並添加重寫規則繞過重定向到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> 
` 
相關問題