HTTP не может зарегистрировать URL

Я пытаюсь запустить службу, использующую порт 8081. Служба останавливается сразу после запуска. Я смотрю в просмотрщик событий и вижу это:

Служба не может быть запущена. System.ServiceModel.AddressAlreadyInUseException: HTTP не может зарегистрировать URL-адрес https:// +:8081/api/. Другое приложение уже зарегистрировало этот URL-адрес в HTTP.SYS. ---> System.Net.HttpListenerException: не удалось прослушать префикс «https:// +:8081/api/», поскольку он конфликтует с существующей регистрацией на компьютере.

Я попытался зарегистрировать URL-адрес с помощью netsh, но он говорит, что файл уже существует, но я не могу удалить резервирование, и оно не отображается в списке резервирования (netsh http show urlacl).

netsh http add urlacl url=http:// +:8081/api/ user=\Everyone

Не удалось добавить резервирование URL, ошибка: 183 Невозможно создать файл, если этот файл уже существует.

netsh http delete urlacl url=https:// +:8081/api/

Не удалось удалить резервирование URL, Ошибка: 2 Системе не удается найти указанный файл.

Есть что-нибудь, что я могу сделать, чтобы решить эту проблему?

Примечание. Служба хорошо работает на других машинах.


person hmiguel    schedule 20.10.2014    source источник
comment
У меня такая же проблема, и netsh http show urlacl не показывает мой URL-адрес HTTP://LOCALHOST:52972, но я могу см. с командой netsh http show servicestate, как удалить запись из servicestate?   -  person JPatel    schedule 16.03.2021
comment
Я обнаружил проблему, у меня есть веб-сайт, который также работает на порту 52972, поэтому он не позволял другому моему приложению работать на том же порту.   -  person JPatel    schedule 16.03.2021


Ответы (3)


В вашей команде удаления используется адрес https, а не http в команде добавления. Убери 's' и все должно работать.

person Mark    schedule 23.12.2014
comment
Проголосовав за этот ответ, потому что у меня также была опечатка в URL-адресе, который я пытался удалить - да ... - person Dr. C. Hilarius; 14.09.2015

Должна быть существующая запись, охватывающая тот же URL-адрес. Вы можете проверить это с помощью команды show, чтобы узнать, какие регистрации существуют, возможно, передать их в файл или выполнить grep для номера порта, как вам угодно, например.

netsh http show urlacl > d:\tmp\out.txt

Затем вы можете удалить старую запись (требуется точное совпадение URL-адреса — следите за http против https и косой чертой в конце — в идеале скопируйте и вставьте из вывода команды show)

netsh http delete urlacl url=theExactRegisteredUrl

И добавьте новую запись с нужными параметрами

netsh http add urlacl url=theExactRegisteredUrl user=\Everyone
person Graham    schedule 05.10.2016
comment
это была моя проблема - при копировании было несколько пробелов в конце.. - person Poat; 17.12.2020

Не используйте «+». Попробуй это:

netsh http add urlacl url=http://0.0.0.0:8081/api/ user=\Everyone
person Brent Arias    schedule 04.04.2015