iisnode和快递

我相信这个问题已经被问了一百万次了,但是到目前为止还没有find解决以下问题的方法。

我有一个使用nodejs和express运行的基本应用程序。 当我在节点中运行应用程序时,它默认将我发送到公共文件夹中的index.html。 即使我没有build立任何路线。 我希望这发生。

我安装了iisnode,并在名为“Devices”的“Default Website”下创build了一个新的应用程序。 我没有改变我的申请。 阅读我需要用web.configsorting一些东西,并决定去与这里提到的configuration(而不是yaml):

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

当我尝试在我的浏览器中加载应用程序时,它总是尝试在我的app.js中find路线,并将消息抛回给我,例如:

不能GET /设备/

我真的用这个拉我的头发,不知道该怎么做! 我是否必须为我的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://本地主机/设备/'

任何人都可以帮助我呢?

       

网上收集的解决方案 "iisnode和快递"

一个好的build议可以在下面find: 一个iisnode托pipe的Web应用程序可以找出它托pipe的虚拟path吗? 本质上,你使用一个小的variables来抽象path和一个环境variables(如果存在的话)来控制它。 另一个好post(可能更好的解决scheme)可以在https://github.com/tjanczuk/iisnode/issues/160find

解决这个问题最简单的方法是为您的应用程序创build一个专用的IIS网站,而不是像您一样在IIS网站内创build一个IIS应用程序。

如果您在IIS中为node.js应用程序提供了专用网站,则应用程序可以在URL空间的根目录(例如http://myapp.com/ ,这是默认快速路由configuration所期望的。 相比之下,如果您在IIS网站中创buildIIS应用程序以承载您的node.js应用程序(比如devices ),则可以通过从属于网站根URL的URL进行访问,例如http://myapp.com/devices/ 。 额外的urlpath段( devices )是您的快递应用程序不期望和不configuration处理,因此它拒绝请求。

如果您坚持将node.js应用程序作为IIS中的IIS应用程序托pipe,则需要增加快速路由configuration,以期望与IIS应用程序名称匹配的额外URLpath段。