我已经使用Azure创建了一个网站,我想在子目录(例如app1 / test)中运行node.js应用程序,而不是创建一个新网站并在根目录中运行该应用程序。
这是我目录的结构
-wwwroot / web.config中
-wwwroot / index.html中
-wwwroot / APP1 /测试/的package.json
-wwwroot / APP1 /测试/ server.js
所以root中有一个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 / test
时我不确定我的web.config有什么问题,如果我需要手动安装iisnode。
我感谢任何帮助。
由于
答案 0 :(得分:3)
我解决了!以下作品!
<match url="app1/test" />
<action type="Rewrite" url="app1/test/server.js" />
答案 1 :(得分:0)
您需要检查您的请求网址是否位于您正在检查的位置,在这种情况下:
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);
然后你可以通过转到页面
进行测试http://localhost:1337/app1/test