6

Windows上のIISでノードWebアプリケーションをホストするためにiisnodeを使用しています。Webサーバー(ExpressやRestifyなど)でルートを設定するときは、IISがアプリケーションをホストしているパスに依存しない方法で設定したいと思います。

たとえば、私のアプリケーションは、IISを実行している2台のマシン上の2つの異なるパスでホストできます。1つ目はでホストでき/foo、2つ目はでホストできます/bar。アプリケーションがでルートを設定したいとします/baz。最初のマシンではルートを構成する必要があり/foo/baz、2番目のマシンでは使用する必要があり/bar/bazます。これはIISで保持されている構成の一部を複製することを意味します。

iisnodeでホストされているアプリケーション内からパスを確実に計算して、セットアップする正しいルートを計算できるようにすることは可能ですか?または、そうする必要を回避するために使用できる別の手法はありますか?

4

4 に答える 4

3

iisnode でホストされている node.js アプリケーション内の仮想ディレクトリに対応するパス セグメントが表示されないようにする方法を知りません。アプリケーション コードがホストに依存しないようにする最善の方法は、IIS Web サイトのルートでホストすることです。

于 2012-05-10T19:02:25.213 に答える
2

@GraemeF: これは少しハックですが、これは私がこの制限を回避した人物です。

まず、home という名前のグローバル変数をアプリに追加しました。

var express = require('express'),
    app = express.createServer(),
    home = process.env.deployPath || '';

次に、ホーム変数を使用してルートを設定します。

app.get(home + '/baz', function(req, res) {
    res.send('This is the /baz route');
    res.end();
});

次に、アプリの web.config で deployPath appSetting を設定するだけです。

マシン 1:

<appSettings>
    <add key="deployPath" value="/foo" />
</appSettings>

マシン 2:

<appSettings>
    <add key="deployPath" value="/bar" />
</appSettings>

各マシンで値を手動で設定したり、ビルド プロセスで値を設定したり、ターゲット マシンのグローバル web.config に設定を追加したりすることもできます。

于 2012-06-27T13:37:00.983 に答える