Web ロールで Socket.io 実装を実行するノード js スクリプトがあります。ノード js スクリプトを開始する方法を見つけることができた唯一の方法は、コマンド プロンプトで実行することだったので、コマンド プロンプトでスクリプトを実行する Web ロールでバックグラウンド タスクを作成しました。
ノードjsファイル、cmd.exe、およびノードモジュールファイルの「出力ディレクトリにコピー」のプロパティを「新しい場合はコピー」に設定し、それらは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 node js アプリケーションから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 ビューにアクセスできるようにするには、どのような変更を行う必要がありますか?
ありがとう