4

我有一个运行良好的简单服务器(如下),问题是 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.");
});
4

2 回答 2

4

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

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

于 2014-01-02T02:20:13.260 回答
0

答案不正确。您可以使用 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=端口号

这样,它将使用 iis 应用程序拥有的任何端口号,或者运行独立模式,它将使用端口 3000。

干杯格萨

于 2015-03-09T07:16:18.277 回答