Как получить порт # при использовании 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 ответа
К сожалению, вы не можете получить номер порта, так как IISNode не использует порты и вместо этого использует потоки по конвейеру, что является той случайной строкой, которую вы видите для номера порта. Если вы хотите получить фактический порт HTTP, на котором работает веб-сайт IIS, вам нужно будет либо проанализировать файл конфигурации, в котором хранится эта информация, либо установить его как переменную среды, доступную для самого узла.
Есть ли причина, по которой вам нужен порт для вашего приложения? Вам не нужен порт для запуска приложения, так как Node будет обрабатывать эту случайную строку как канал, а не запускать сервер в порту.
answare не правильно. Вы можете динамически устанавливать номер порта в своем приложении, используя переменные сервера IIS. https://msdn.microsoft.com/en-us/library/ms524602%28v=vs.90%29.aspx
Просто добавьте в webconfig тег: iisnode продвижения ServerVars="SERVER_PORT", а затем в вашем экспресс-маршруте определите:
var portnumber = (req.headers ['x-iisnode-server_port'] || 3000)
res.locals.serverport = номер_порт
таким образом, он будет использовать любой номер порта приложения iis или работать в автономном режиме, используя порт 3000.
Ура геза