使用iisnode时如何获取端口#?

时间:2013-06-08 18:32:16

标签: iisnode

我有一个运行正常的简单服务器(下图),问题是process.env.PORT的值不是我预期的数字,而是一个字符串值,如“\\。\ pipe \ d226d7b0 -64a0-4d04-96d4-a75e1278b7a9" 。如何获取http侦听器正在使用的端口的实际数值?

var path = require("path");
var server = require("../server/server.js");
server.start(process.env.PORT, function() {
    console.log("Server started.");
});

2 个答案:

答案 0 :(得分:2)

不幸的是,您无法获取端口号,因为IISNode不使用端口,而是使用管道流,这是您看到的端口号的随机字符串。如果要获取运行IIS网站的实际HTTP端口,则需要解析存储此信息的配置文件,或将其设置为Node本身可访问的环境变量。

您是否需要为您的应用程序提供端口?您不应该需要端口来运行应用程序,因为Node会将该随机字符串视为管道,而不是在端口上运行服务器。

答案 1 :(得分:-1)

answare不正确。您可以使用IIS服务器变量在应用程序中动态设置端口号。 https://msdn.microsoft.com/en-us/library/ms524602%28v=vs.90%29.aspx

只需在标记中添加webconfig:iisnode promoteServerVars =“SERVER_PORT” 然后在你的快车路线中定义:

var portnumber =(req.headers ['x-iisnode-server_port'] || 3000)

res.locals.serverport = portnumber

这样它将使用iis app所拥有的任何端口号,或者运行独立模式它将使用端口3000.

干杯格扎