2012-09-18 44 views
5

我確定這個問題已被問及一百萬次,但我還沒有找到任何解決方案,以下問題到目前爲止。iisnode和快遞

我有一個基本的應用程序運行使用和的NodeJS明確。當我在節點中運行應用程序時,它默認將我發送到公共文件夾中的index.html。即使我沒有建立任何路線。我希望這發生。

我已經安裝iisnode創造下稱爲「設備」「默認網站」的新應用程序。我把我的應用程序保持不變。閱讀周圍,我需要出去與web.config中排序一些東西,並決定去與這裏提到的配置(不是YAML):

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

當我嘗試在我的瀏覽器加載應用了它總是試圖找到我的app.js的路線,並在我拋出訊息傳回如:

不能得到/設備/

我真的很拉我的頭髮與這一個,不知道是什麼去做!我是否必須爲我的app.js入口點內的靜態內容設置默認路由?我在地方執行以下操作:

的「http://本地主機/設備/」

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

任何人能夠幫助我與此?

+0

發現我已經回答了這個在另一個線程。看到我的答案在[這裏](http://stackoverflow.com/a/31482232/2980607) – peteb

回答

5

來解決這個問題的最簡單方法是爲應用程序創建一個專用的IIS網站,而不是像你這樣一個IIS網站內創建一個IIS應用程序。

如果你有在IIS中的Node.js應用程式一個專門的網站,應用程序是在URL空間,例如根訪問http://myapp.com/,這是默認的快速路由配置所期望的。相比之下,如果您在IIS網站中創建IIS應用程序以承載您的node.js應用程序(例如devices),則可以通過從屬於網站根URL的URL訪問它,例如, http://myapp.com/devices/。額外的URL路徑段(devices)是您的快遞應用程序不期望的內容,並且未配置爲處理,因此它會拒絕該請求。

如果你堅持託管Node.js的應用程序在IIS中的IIS應用程序,您將需要增加您的明確路由配置到預期的IIS應用程序的名稱相匹配的額外的URL路徑段。

+0

我不會downvote,因爲你至少描述這個問題,但我不會upvote,因爲所有這一切,你仍然沒有不提供解決方案。最終,所需的更改(請參閱下面的答案)可以使應用程序在任何環境下都更加健壯,並克服IIS中虛擬目錄強加的問題。 – rainabba

+0

我提高了你的服務質量,因爲將節點應用程序隔離到它自己的專用網站上,使得對URL空間的根目錄是什麼 – Alexander