我试图在iis上运行“ Hello World”示例node.js服务器:
var http = require('http');
var server = http.createServer(function(req, res) {
res.writeHead(200, {"Content-Type":"text/plain"});
res.end("Hello World\n");
})
server.listen(3000);
console.log('server is running');
使用此web.config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="httpplatformhandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" requireAccess="Script" />
</handlers>
<httpPlatform stdoutLogEnabled="true" stdoutLogFile="node.log" startupTimeLimit="20" processPath="C:\Program Files\nodejs\node.exe C:\Users\username\Tests\nodeHandlerTest\app.js">
<environmentVariables>
</environmentVariables>
</httpPlatform>
</system.webServer>
</configuration>
它不起作用!知道我的
web.config
文件是什么问题吗? 最佳答案
对于端口,模块将在您可以使用%HTTP_PLATFORM_PORT%
访问的随机端口上启动进程。因此,您应该将其映射到Node env变量,否则当IIS尝试在其回收时尝试启动多个Node进程时,您将获得地址使用错误。app.js
的路径应在arguments
属性中指定。
因此,您的app.js
应该如下所示:
var http = require('http');
var server = http.createServer(function(req, res) {
res.writeHead(200, {"Content-Type":"text/plain"});
res.end("Hello World\n");
})
var port = process.env.PORT || 3000;
server.listen(port);
console.log('server is running on port: ' + port);
和
web.config
:<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="httpplatformhandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" requireAccess="Script" />
</handlers>
<httpPlatform
stdoutLogEnabled="true"
stdoutLogFile=".\node.log"
startupTimeLimit="20"
processPath="C:\Program Files\nodejs\node.exe"
arguments=".\app.js">
<environmentVariables>
<environmentVariable name="PORT" value="%HTTP_PLATFORM_PORT%" />
<environmentVariable name="NODE_ENV" value="Production" />
</environmentVariables>
</httpPlatform>
</system.webServer>
</configuration>
请注意,从v1.2开始,如果路径以“。”开头,则支持相对路径。该路径被认为是相对于站点根目录的,因此是log和app.js文件的
.\
。更多信息here。关于node.js - 使用HttpPlatformHandler在iis上运行node.js应用程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33615918/