2012-09-18 17 views
5

Bu sorunun milyonlarca kez sorulduğundan emin olabilirim, ancak şu andaki sorunla ilgili herhangi bir çözüm bulamadım.iisnode and express

nodejs ve express kullanarak çalışan temel bir uygulamam var. Uygulamayı düğümde çalıştırdığımda, varsayılan olarak beni ortak klasörümdeki index.html dosyasına gönderir. Herhangi bir güzergahım olmasa bile. Bunun olmasını istiyorum.

iisnode'u yükledim ve 'Aygıtlar' adı verilen 'Varsayılan Web Sitesi' altında yeni bir uygulama oluşturdum. Başvurumu orada değiştirmedim. Ben web.config bazı şeyler sıralamak için gerekli etrafında okuma ve burada belirtilen yapılandırma (değil yaml) ile gitmeye karar:

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

ben denemek ve benim tarayıcıda uygulamayı yüklemek o hep app.js rotayı bulmaya çalışır ve bu şekilde bana geri mesajları atar:

GET Can not/cihazlar/gerçekten bu biriyle saçımı çekerek ediyorum ve bilmiyorum

neyi yapmak! Benim app.js giriş noktanımdaki statik içerik için varsayılan bir yol ayarla mıyım? Ben yerinde vardır:

'http: // localhost/cihazlar /' o kökü gelen Uygulamayı yüklediğinizde

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'))); 
}); 

Ama hala üzerinde beni el vermez index.html için

Bu konuda bana yardımcı olabilecek herkes var mı?

+0

adresinde bulunabilir. cevabımı görmek için [buraya] (http://stackoverflow.com/a/31482232/2980607) – peteb

cevap

5

Bu sorunu çözmenin en kolay yolu, sizin yaptığınız gibi bir IIS web sitesinde bir IIS uygulaması oluşturmanın aksine, uygulamanız için ayrılmış bir IIS web sitesi oluşturmaktır.

IIS'de node.js uygulamanız için özel bir web siteniz varsa, uygulamaya URL alanının kökünde erişilebilir, örn. http://myapp.com/, varsayılan ekspres yol yapılandırmasının beklediği şeydir. Buna karşılık, bir IIS web sitesi içinde node.js uygulamanızı barındırmak için bir IIS uygulaması oluşturursanız (ör. devices), web sitesinin kök URL'sine bağlı bir URL adresinden erişilebilir. http://myapp.com/devices/. Ek URL yolu segmenti (devices), ekspres uygulamanızın beklemediği ve işlemek üzere yapılandırılmadığı bir şeydir ve bu nedenle isteği reddeder.

node.js uygulamasını IIS'de IIS uygulaması olarak barındırmakta ısrar ederseniz, IIS uygulama adıyla eşleşen fazladan URL yolu segmentini beklemek için ekspres rota yapılandırmanızı artırmanız gerekir.

+0

En azından sorunu tanımladığınızdan dolayı aşağı çekilmeyeceğim, ama hiçbir şey yapmayacağım çünkü tüm bunlar için, hala bir çözüm sunmuyor. Nihayetinde, gerekli değişiklikler (aşağıdaki cevabıma bakın), uygulamayı herhangi bir ortamda daha sağlam hale getirmeye ve IIS'de sanal dizinlerin uyguladığı sorunun üstesinden gelmeye hizmet eder. – rainabba

+0

Düğüm uygulamasını kendi adanmış web sitesine ayırdığı için, URL uzayının kökü ne olduğundan daha az karışıklık yarattığından dolayı sizi destekledim – Alexander