2012-09-18 8 views
5

私はこの質問が何百万回も尋ねられたと確信していますが、私はまだ以下の問題を解決していません。iisnodeとexpress

私はnodejsを使用して実行している基本アプリケーションを持っています。ノードでアプリケーションを実行すると、デフォルトで私のパブリックフォルダのindex.htmlに送られます。私にはルートが設定されていなくても。私はこれが起こることを望む。

私はiisnodeをインストールし、「デフォルトのウェブサイト」の下に「デバイス」と呼ばれる新しいアプリケーションを作成しました。私はそこに私のアプリケーションをそのまま置いた。

http://tomasz.janczuk.org/2012/05/yaml-configuration-support-in-iisnode.html

私はそれを試してみて、私のブラウザでアプリをロードすると:私はweb.configファイルでいくつかのものを整理するのに必要とここで言及設定(ないYAML)で行くことにしたの周り読みますいつも私のapp.jsでルートを見つけようと、そのように私に戻ってメッセージをスローします:

/デバイス/

私は本当にこの1で私の髪を引っ張ってるとわからないことができませんする!私のapp.jsエントリーポイント内に静的コンテンツのデフォルトルートを設定する必要がありますか?

app.configure(function(){ 
    app.set('port', process.env.PORT || 3000); 
    app.set('views', __dirname + '/views'); 
    app.set('view engine', 'jade'); 
    app.use(express.favicon()); 
    app.use(express.logger('dev')); 
    app.use(express.bodyParser()); 
    app.use(express.methodOverride()); 
    app.use(app.router); 
    app.use(express.static(path.join(__dirname, 'public'))); 
}); 

しかし、まだ私はそれから、アプリケーションがルートのロード時にindex.htmlをするために私に渡していない:私は場所に次のように持って

「のhttp:// localhostの/デバイス/」

誰もがこれで私を助けることができますか?

+0

で見つけられます。別のスレッドでこれを回答しました。私の答えはこちらを参照してください。(http://stackoverflow.com/a/31482232/2980607) – peteb

答えて

5

この問題を解決する最も簡単な方法は、IIS Webサイト内にIISアプリケーションを作成するのではなく、アプリケーション用の専用IIS Webサイトを作成することです。

IISでnode.jsアプリケーション専用のWebサイトを使用している場合、アプリケーションはURLスペースのルート(例: http://myapp.com/となります。これは、デフォルトの高速ルート設定に必要なものです。対照的に、IIS Webサイト内でIISアプリケーションを作成してnode.jsアプリケーション(たとえばdevices)をホストする場合、WebサイトのルートURLに従属するURL、たとえばhttp://myapp.com/devices/。余分なURLパスセグメント(devices)は、あなたの明示的なアプリケーションが予期せず処理するように構成されていないものであるため、要求を拒否します。

IISでIISアプリケーションとしてnode.jsアプリケーションをホストすることを強くお勧めする場合は、IISアプリケーション名と一致する余分なURLパスセグメントが必要になるようにエクスプレスルート設定を強化する必要があります。

+0

あなたは少なくとも問題を説明しているので、私はdownvoteしませんが、私はupvoteしません。解決策を提供しません。最終的に、必要な変更(下記の私の答えを参照)は、どの環境でもアプリケーションをより堅牢にし、IISの仮想ディレクトリによって課せられた問題を克服するのに役立ちます。 – rainabba

+0

ノードアプリケーションを専用のWebサイトに隔離するので、URLスペースのルートが何であるかについて、混乱は少なくなりました。 – Alexander