5

この質問は何百万回も聞かれていると思いますが、現時点では次の問題の解決策は見つかりませんでした。

nodejsとexpressを使用して実行されている基本的なアプリケーションがあります。ノードでアプリケーションを実行すると、デフォルトでパブリックフォルダーのindex.htmlに送信されます。ルートを設定していなくても。私はこれを実現させたい。

iisnodeをインストールし、「デフォルトのWebサイト」の下に「デバイス」という新しいアプリケーションを作成しました。私は自分のアプリケーションを変更せずにそこに置きました。周りを読んで、web.configでいくつかのものを整理する必要があり、ここで説明した構成(yamlではない)を使用することにしました:

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

ブラウザにアプリをロードしようとすると、常にapp.jsでルートを見つけようとし、次のようなメッセージが返されます。

/devices/を取得できません

私は本当にこれで髪を抜いていて、どうしたらいいかわかりません!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 / devices /'

これで私を助けることができる人はいますか?

4

2 に答える 2

5

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

IISにnode.jsアプリケーション専用のWebサイトがある場合、アプリケーションはURLスペースのルートからアクセスできます。たとえばhttp://myapp.com/、これはデフォルトの高速ルート構成で想定されているものです。対照的に、ノード.jsアプリケーションをホストするIIS Webサイト内にIISアプリケーションを作成する場合(たとえばdevices)、WebサイトのルートURLに従属するURLでアクセスできますhttp://myapp.com/devices/。追加のURLパスセグメント(devices)は、エクスプレスアプリが予期しないものであり、処理するように構成されていないため、リクエストを拒否します。

node.jsアプリケーションをIISでIISアプリケーションとしてホストすることを主張する場合は、IISアプリケーション名と一致する追加のURLパスセグメントを期待するために、エクスプレスルート構成を拡張する必要があります。

于 2012-09-18T16:41:04.777 に答える
3

良い提案は次の場所にあります。iisnodeでホストされているWebアプリケーションは、ホストされている仮想パスを処理できますか?基本的に、1つの小さな変数を使用してパスを抽象化し、環境変数(存在する場合)を使用してパスを制御します。別の良い投稿(おそらくより良い解決策)はhttps://github.com/tjanczuk/iisnode/issues/160で見つけることができます

于 2013-11-01T22:46:49.273 に答える