1

サーバーに IISNode をセットアップし、ガイドに従って単純な Hello World node.js アプリを実行しました。正常に動作し、インターネット経由で外部からアクセスできます。ただし、既存の Express アプリを取り込もうとすると、node/express が存在しないようです。

これは私の web.config ファイルです:

<configuration>
<system.webServer>

<handlers>
<add name="iisnode" path="app.js" verb="*" modules="iisnode" />
</handlers>

</system.webServer>
</configuration>

これは、メインの高速ファイルである app.js とともに、IIS アプリケーションのルート ディレクトリにあります。興味深いのは、localhost/TestApp/app.js にアクセスすると、次のように返されることです。

Cannot GET /TestApp/app.js

ただし、localhost/TestApp/public/htm/index.htm などの別のファイルを試すと、そこにあるファイルが返されます (予想どおり、HTML で)。また、サーバー呼び出しを試みた場合 (例: localhost/TestApp/GetUsernames)。

さらに興味深いのは、ポートを台無しにした場合 (例: app.listen(process.env.PORT2 );)、localhost/TestApp.js にアクセスしようとすると、次のようになることです。

> iisnode encountered an error when processing the request.
> 
> HRESULT: 0x2 HTTP status: 500 HTTP reason: Internal Server Error

ポートが正しい場合 (app.listen(process.env.PORT2);)、Cannot GET /TestApp/app.js が表示されるため、IISNode が app.js を実行しているように見えます (他の方法で失敗することはありません)。ポートを台無しにします)、何も機能していないようです。

どうすればこれを修正できますか、または少なくとも問題を診断できますか?

ありがとうございました。

4

1 に答える 1

3

<rewrite>リクエストをルーティングする方法を明確にするために、おそらくセクションを追加する必要があります。

<rewrite>
        <rules>
            <!-- Don't interfere with requests for node-inspector debugging -->
            <rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true">
                <match url="^server.js\/debug[\/]?" />
            </rule>

            <!-- First we consider whether the incoming URL matches a physical file in the /public folder -->
            <rule name="StaticContent">
                <action type="Rewrite" url="public{REQUEST_URI}" />
            </rule>

            <!-- 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="server.js" />
            </rule>
        </rules>
    </rewrite>

サンプルの Azure node.js アプリから取得しました。

于 2013-12-06T23:50:29.683 に答える