WireMock. Net оставляет порт открытым после завершения процесса - PullRequest
0 голосов
/ 22 января 2020

Я начал использовать WireMock. net в своих тестах, но иногда, когда я запускаю тест, я получаю исключение:

Failed to bind to address http://0.0.0.0:9999: address already in use. ---> Microsoft.AspNetCore.Connections.AddressInUseException: Only one usage of each socket address (protocol/network address/port) is normally permitted ---> System.Net.Sockets.SocketException: Only one usage of each socket address (protocol/network address/port) is normally permitted.

Ясно, что ошибка произошла в предыдущем запуске, который не закрыл порт. Используя TCPView из SysInternals, я вижу, что процесс, который удерживает этот порт, является «», и я не могу ни его убить, ни найти PID в диспетчере задач, ни уничтожить его с помощью taskkill. Единственное решение, которое я нашел, - это перезапустить или, по крайней мере, выйти / войти в систему Windows. Я искал в Интернете (и StackOverflow), чтобы понять, как процесс может удерживать порт, даже если он был прерван, но не нашел какого-либо полезного объяснения.

Потому что это происходит только изредка, и потому что время, когда это происходит, требует перезапуска, это делает кошмаром отладку и расследование. Кажется, что это происходит, когда происходит сбой отправляющего приложения при отправке или получении сообщения, но я не уверен.

Я хотел бы знать:

  1. Если кто-то знает, что условие, при котором порт можно оставить открытым после завершения процесса
  2. Как это можно предотвратить или смягчить?
  3. В случае, если это происходит, существует ли более простой способ освободить порт? (может быть, есть служба, которую я могу перезапустить?)

Заранее спасибо.

1 Ответ

0 голосов
/ 28 января 2020

Ради любого, кто может столкнуться с той же проблемой:

Похоже, что убийство клиентского процесса освободило порт. Однако с тех пор, как я написал вопрос, это случилось со мной только один раз, поэтому я не смог это проверить. Это отвечает на мой третий вопрос, но я до сих пор не могу точно определить, когда и почему это происходит, и как это предотвратить.

...