如何在azure网站子目录中运行node.js应用程序

我已经创build了一个使用Azure的网站,我想在一个子目录(例如app1 / test)中运行一个node.js应用程序,而不是创build一个新的网站并在根目录下运行应用程序。

这是我的目录结构

-wwwroot / web.config中

-wwwroot / index.html的

-wwwroot / APP1 /testing/的package.json

-wwwroot / APP1 /testing/ server.js

所以有一个index.html在根目录中,然后我在test子目录中的server.js。

这是我的server.js:

var http = require('http'); var port = process.env.port || 1337; http.createServer(function (req, res) { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello World\n'); }).listen(port); 

这是我的package.json:

 { "name": "test", "version": "0.0.0", "description": "test", "main": "server.js", "author": { "name": "name", "email": "" }, "dependencies": { } } 

我的web.config:

 <?xml version="1.0" encoding="utf-8" ?> <configuration> <location path="app1/test"> <system.webServer> <modules runAllManagedModulesForAllRequests="false" /> <!-- indicates that the server.js file is a node.js application to be handled by the iisnode module --> <handlers> <add name="iisnode" path="server.js" verb="*" modules="iisnode" /> </handlers> <rewrite> <rules> <rule name="app" enabled="true" patternSyntax="ECMAScript" stopProcessing="true"> <match url="iisnode.+" negate="true" /> <conditions logicalGrouping="MatchAll" trackAllCaptures="false" /> <action type="Rewrite" url="server.js" /> </rule> </rules> </rewrite> </system.webServer> </location> <system.webServer> <handlers> <add name="iisnode" path="server.js" verb="*" modules="iisnode" /> </handlers> </system.webServer> </configuration> 

但是我明白了

“页面无法显示,因为发生了内部服务器错误。”

当我打到域名/ app1 /testing

不知道我的web.config有什么问题,如果我需要手动安装iisnode。

我感谢任何帮助。

谢谢

我解决了它! 以下作品!

 <match url="app1/test" /> <action type="Rewrite" url="app1/test/server.js" /> 

您需要检查您的请求url是否在您要检查的位置,在这种情况下:

 var http = require('http'); var port = process.env.port || 1337; http.createServer(function (req, res) { if(req.url === '/app1/test') res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello World\n'); }).listen(port); 

然后你可以通过转到页面来testing它

 http://localhost:1337/app1/test