У меня есть EXE, который при запуске запускает службу на стороне сервера и прослушивает localhost:12345
с использованием OWIN и Self Host.
Теперь у меня есть отдельный тестовый проект, построенный из Typescript и NodeJS, которыйделает две вещи.
Во-первых, он запускает упомянутый выше EXE-файл, используя NodeJS child_process.spawn(pathToExe)
.
Затем, чтобы убедиться, что служба запущена, я проверяю конечную точку службы /ping
, используя следующий фрагмент кода:
let pingRequest: child_process.SpawnSyncReturns<string> = child_process.spawnSync("powershell", [`wget http://localhost:12345/ping | % {$_.StatusCode}`]);
if (pingRequest) {
let statusCode: string = pingRequest.stdout.toString().trim();
if (!Commerce.StringExtensions.isNullOrWhitespace(statusCode)) {
return Commerce.StringExtensions.compare(statusCode, "200") === 0;
}
}
После этого у меня есть тесткоторый вызывает службу с использованием AJAX.
Проблема, с которой я сталкиваюсь, заключается в том, что я пытаюсь запустить этот проект в конвейере Azure, используя VS 2017 + Windows Server 2016 или Windows Container1803 агент, в то время как вызов ping завершается успешно, все последующие вызовы (вызовы, использующие AJAX) завершаются со следующим сообщением об ошибке:
Error: Error: connect ECONNREFUSED 127.0.0.1:12345
Все вызовы из теста явно используют http://localhost:12345
ине 127.0.0.1:12345
.Я не уверен, если это важно.Я должен также упомянуть, что тот же проект успешно выполняется на компьютере с Windows 10 и даже ванильной сборкой Windows Server 2016.
Поскольку вызов ping завершается успешно, я предполагаю, что EXE все еще работает.Я не знаю, что делать, чтобы лучше отладить проблему.Кто-нибудь сталкивался с подобной проблемой раньше?
Я использую Node v8.9.4.