1

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 ビューにアクセスできるようにするには、どのような変更を行う必要がありますか?

ありがとう

4

2 に答える 2

0

これを行う1つの方法は、すべての静的コンテンツを特定のフォルダーに配置し、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>
`
于 2013-03-14T03:33:05.900 に答える
0

Web ロールで node.js を実行する最善の方法は、iisnode を使用することです。これは、iis 要求を node.exe プロセスにリダイレクトする iis http モジュールであり、node.js アプリで iis プロセス管理を使用できるようにします。

これは、windows azure powershell または azure Web サイトを使用して簡単に実行できます。詳細については、 http://www.windowsazure.com/en-us/develop/nodejs/tutorials/getting-started/を参照してください。

于 2013-03-13T04:03:15.590 に答える