Почему и как исправить? IIS Express «Указанный порт используется»


81

Мы знаем, что случайный номер порта назначается веб-приложению в Visual Studio. Он отлично работает на моем рабочем столе в офисе. Но когда я загружаю код на свой ноутбук (с VisualStudio.com) и запускаю веб-приложение. Я получил сообщение, в котором говорится:

Указанный порт уже используется

Порт 10360 уже используется другим приложением.

Рекомендации

  1. Попробуйте переключиться на порт, отличный от 10360 и выше 1024.
  2. Остановите приложение, использующее порт 10360.

Я могу исправить это Recommendation #1, изменив порт на что-нибудь вроде 13333. Но мне очень любопытно, что случилось с портом 10360. Как я могу проверить, какое приложение использует порт 10360? Как я могу остановить это приложение?


У меня такая же проблема. Моя проблема заключалась в том, что у меня было несколько веб-проектов в одном решении. Хотя они не работали. Один из других проектов использовал тот же порт. Просто убедитесь, что каждый проект использует собственный порт.
— Menace

Ответы:


52

я так решаю проблему ...

Файл -> Открыть -> Веб-сайт ... введите описание изображения здесь

После этого выберите Local IIS в разделе IIS Express Site и удалите ненужный проект.

надеюсь, что это поможет.


4
После этого мне пришлось перезапустить.
— angrydust

4
Где выбрать Local IIS на сайте IIS Express
— Prakash Joshi

2
Этот шаг не устранил мою проблему. Выполнив указанные действия, я также перезапустил Visual Studio, но безуспешно.
— user1451111

После того, как я сделал это, я получаю сообщение об ошибке «не удается подключиться к веб-серверу iisexpress» при попытке запустить решение.
— Энрико

37
  1. измените его в решении (щелкните правой кнопкой мыши) -> свойство -> вкладка Интернет
  2. Нажмите « Создать виртуальный каталог» (перед текстовым полем «URL-адрес проекта»).

Изменение порта IIS Express для исправления используемого порта


1
Я не хочу снова и снова менять страницу свойств .sln. В моем случае порт, определенный на странице свойств (как вы показали выше), становится заблокированным, когда я делаю что-то в Visual Studio, что вызывает сбой Visual Studio.
— bkwdesign

@bkwdesign, я понятия не имею о сбое, может быть, вам следует запустить с правами администратора, а также создать виртуальный каталог или обновить VS до последней версии или, наконец, просто переключиться на стандартную роль IIS
— Иман

30

У меня была аналогичная проблема с Visual Studio 2019 в Windows 10. Некоторые решения, которые работали для других, включали:

  1. Изменение номера порта приложения.
  2. Пусть Visual Studio автоматически назначает номер порта при каждом запуске приложения.
  3. Перезапустите Visual Studio
  4. Перезагрузите компьютер.

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

Решение

Сначала я выполнил команду:

netsh http add iplisten ipaddress=::

из процесса командной строки с повышенными привилегиями. Это решило начальную ошибку: при попытке запустить приложение я больше не получал ошибку «порт используется», вместо этого теперь я получил сообщение об ошибке, в котором говорилось, что приложение не может подключиться к порту, потому что требуются административные привилегии. (хотя я запускал Visual Studio как администратор)

Вторая ошибка была вызвана Hyper-V, который добавляет порты в диапазон исключения портов, порт, который использует мое приложение, находился в одном из этих диапазонов исключения. Вы можете просмотреть эти порты, выполнив следующую команду:netsh interface ipv4 show excludedportrange protocol=tcp

Чтобы решить эту вторую ошибку:

  1. Отключите Hyper-V: Панель управления-> Программы и компоненты-> Включение или отключение компонентов Windows. Снять флажок Hyper-V
  2. Перезагрузите компьютер.
  3. Добавьте порт, который вы используете, в диапазон исключения портов: netsh int ipv4 add excludedportrange protocol=tcp startport=50403 numberofports=1 store=persistent
  4. Повторно включить Hyper-V
  5. Перезагрузите компьютер

Отсюда все работало отлично.


Вау, единственное, что привело меня к решению. Отключение Hyper-V принесло мне хмурый BSOD с Windows 10 благодаря корпоративной сборке, но благодаря netsh interface ipv4 show excludedportrange protocol=tcpмне, по крайней мере, я смог выбрать новый порт для проекта.
— SharpC

1
Чувак Мало того, что это был правильный ответ, вы фактически объяснили его, а не просто сбросили сценарий CMD (что, кстати, нормально для большинства случаев). Большое вам спасибо, я бы проголосовал 100 раз, если бы мог.
— Ryanman

1
Спасибо, со мной такое случилось после установки докера.
— MaxPower

1
Это спасло меня, я провел все свои дни и был очень расстроен. Это приводит меня к правильному решению. github.com/docker/for-win/issues/3171#issuecomment-459205576
— мухаммад кашиф

Была эта проблема из-за Hyper-V. Спасибо за это!
— DylanSp

28

У меня была такая же проблема, но ни в netstat, ни в resmon не было никаких успехов.

Для меня проблему решило закрытие всех открытых окон браузера.


1
Вау. У меня это тоже сработало. Кто-нибудь может объяснить почему?
— SJC

Подтверждение того, что это иногда решает проблему (используя Firefox в качестве стандартного браузера), и это не имеет абсолютно никакого смысла.
— Флориан Винтер,

4
У меня это не сработало. Нет запущенных приложений. Просто используемый порт. Нет запущенных веб-страниц. Просто ошибка. Как больно.
— Майк,

2
Я думаю, что причина, по которой это работает, заключается в том, что когда вы делаете веб-запрос, браузер использует произвольный номер для исходного порта (обычно между 49152-65535), и это конфликтует с портом, настроенным в IIS
— Хью Джеффнер

Это сработало и для меня. Это не имело смысла, поскольку приложение, блокирующее порт, не имело причин использовать его.
— Джеймс Вестгейт

28

Это преследовало меня больше года!

Для меня,

  • ни один веб-сайт не работал в IIS Express
  • ничто не использовало порт, как определено путем выполнения: netstat -anoв командной строке.

Решением было запустить

netsh http add iplisten ipaddress=::

из командной строки.

Счастливых дней и заслуга Джеймса Брайанта! https://developercommunity.visualstudio.com/content/problem/110767/specified-port-is-in-use.html


не знаю, что произошло, не знаю, что делает эта команда, но она работала там, где другие решения здесь не
— сработали

4
Эта команда сломала мой IIS, будьте осторожны при запуске. Пришлось запустить netsh http delete iplisten ipaddress = ::, чтобы мои локальные сайты IIS снова заработали.
— Стив

Мой IIS тоже сломался, он начал говорить, что ему нужны административные привилегии для запуска. Пришлось его отменить.
— jswetzen

Для тех, у кого после этого возникают проблемы с правами администратора, посмотрите ответ @Philip Trenwith, это могут быть диапазоны исключенных портов Hyper-V.
— IronSean

18

Вы ищите netstat.

Откройте административную командную оболочку и запустите

netstat -aob

И найдите порт 10360. Он покажет вам, какой исполняемый файл открыл порт и какой PID искать в диспетчере задач. (На самом деле, netstat -?сначала запустите непривилегированную оболочку, потому что я не одобряю слепой запуск всего, чего вы не понимаете, особенно в привилегированном контексте.)

Вот что делают переключатели:

-a показывает все подключения или открытые порты, а не только активные - порт, который вы хотите, вероятно, прослушивает, а не активен.

-oпоказывает собственный PID соединения или порта, поэтому вы можете найти процесс на вкладке «Процессы» диспетчера задач. (Возможно, вам потребуется добавить столбец PID в диспетчере задач. Просмотр-> Выбрать столбцы)

-bпоказывает двоичный файл, участвующий в открытии соединения или порта. Это тот, который требует повышенного доступа.


Это здорово. Теперь у меня, по крайней мере, есть PIDприложение. Благодарю.
— Blaise

9
Эта команда будет генерировать много шума, поэтому, если вы хотите перейти прямо к проблемному приложению, netstat -aob | findstr '10360'
— передайте

1
Все остальные ответы отправили меня в лес, этот фактически позволил мне найти источник и исправить проблему.
— Хью Джеффнер

Кроме того, вы можете использовать nestat -aob -p TCP только для просмотра портов TCP
— Широй,

12
  1. Закройте VS
    1. Начать снова - щелкните правой кнопкой мыши и запустите от имени администратора
    2. Снова запустите свой проект.

Если предположить, что порт используется каким-то другим процессом, порт меняет порт в проекте> свойства> отладка, а затем запускается от имени администратора,
— Номан Чали

Это довольно печально, но это сработало. Больше ничего не работало. Ошибка совершенно неверна, так как у меня не было запущенных процессов под данным портом. Похоже, это ошибка Visual Studio и IISExpress. Не имеет смысла, почему мне пришлось закрыть его и запустить снова.
— Майк,

Этот шаг не устранил мою проблему.
— user1451111

Счастлив и обеспокоен тем, что один запуск администратора - это то, что требовалось после перезагрузки, изменения порта, уничтожения процессов, поиска netstat, изменений iplisten. Продолжает работать при запуске от имени пользователя.
— Ричард

10

ПРОСТОЕ РЕШЕНИЕ, ПОДХОДЯЩЕЕ ДЛЯ МЕНЯ: (Кредиты на комбинацию ответов других)

**My System Info:**
Windows 10 build : 1809
IIS Version      : 10.0.17763.1
Hyper-V          : Enabled
Docker           : Installed - 2.3.0.2 (45183)
  • Проверьте диапазон заблокированных портов в CMD (администратор)

    >> netsh interface ipv4 show excludedportrange protocol=tcp
    
    (Sample output):
    Protocol tcp Port Exclusion Ranges
    Start Port    End Port
    ----------    --------
    49696       49795         (SEE HERE, 49796 to 49895 is not blocked)
    49896       49995
    ... list goes on ...
    
  • Откройте Visual Studio и перейдите в> Проект> Свойства> Интернет> Серверы> URL-адрес проекта.

  • Используйте порт, который не заблокирован.

    (Sample port):
    http://localhost:49796/
    
  • Перезапустите Visual Studio (при необходимости)

  • Выпей кофе и поделись любовью. (обязательный) :)


3
Это круто! Спасибо
— Grandizer

есть идеи, почему блокируется определенный диапазон?
— Джей Сантош

4
  1. Удалите файл .sln, если он у вас есть.
  2. Откройте файл C: \ Users \ NN \ Documents \ IISExpress \ config \ applicationhost.config
  3. Найдите проблемный сайт в config / system.applicationHost / sites и удалите весь раздел сайта.
  4. «Открыть веб-сайт ..» из Visual Studio, и проекту будет предоставлен случайный новый порт.

Это по-прежнему лучшее решение.
— Винсент

3

Если netstat ничего не показывает, попробуйте перезагрузиться.

Для меня в netstat для моего порта ничего не появилось. Я попытался закрыть окна браузера Google Chrome, как предлагали @Clangon и @JT Taylor, но безрезультатно.

Однако в конце концов перезагрузка системы сработала, поэтому я могу только предположить, что что-то еще тайно удерживало порт открытым. Или, возможно, просто потребовалось больше времени, чем я был готов ждать, пока порты будут освобождены после завершения работы Chrome.


Собственно мой сценарий!
— user1451111


3

netstat не показал ничего, что уже использует порт

netstat -ano | findstr <your port number>ничего не показал для меня. Я обнаружил, что порт был исключен с помощью этой команды, чтобы увидеть, какие диапазоны зарезервированы чем-то еще:

netsh interface ipv4 show excludedportrange protocol=tcp

Вы можете попробовать разблокировать диапазон от начального порта для ряда портов (требуется командная строка с администратором):

netsh int ip delete excludedportrange protocol=tcp numberofports=<number of ports> startport=<start port>

Однако в моем случае я не смог разблокировать диапазон, я получил сообщение «Доступ запрещен», поэтому мне пришлось выбрать другой порт для своего сайта.

Мое оригинальное решение: единственное, что сработало, - это удаление папки .vs в папке решения. (С тех пор я обнаружил, что вы можете просто удалить .vs / config / applicationhost.config вместо этого, чтобы не потерять так много настроек).


Я думал, что это решение сработает, но я все равно получаю сообщение об ошибке. Этот порт для меня (3333) вообще не отображается в netstat -a.
— Крис Уолш

1
@ChrisWalsh эта проблема повторилась для меня, и я узнал дополнительную информацию, почему я обновил свой ответ. Вы могли бы быть в той же лодке, что и я, порт не использовался, но зарезервирован (исключен) кем-то другим.
— Джон Леонард

2

Откройте диспетчер задач и просто закройте все процессы «Системный лоток IIS Express» и «Рабочий процесс IIS Express» и повторно запустите проект.

Сведения о процессе диспетчера задач


2

Визуальная студия 2015

  • Закройте все файлы, открытые в Visual Studio.
  • Затем закройте приложение и выйдите из Visual Studio.
  • Откройте Visual Studio, и он должен успешно запуститься.

Надеюсь, это поможет.


2
Это не имеет ничего общего с портами. Прочтите вопрос, пожалуйста.
— UmarZaii

Я уже прочитал вопрос, тогда только я отвечаю, что это случилось и со мной, и я сделал то же самое, что написал в посте, и это работает для меня.
— saurav singh

Думаю, тогда все в порядке.
— UmarZaii

Это исправило это для меня. Так много проблем можно исправить, просто перезапустив Visual Studio.
— CapnChaos

Это просто исправило это для меня. Понятия не имею, на что жалуется UmarZaii.
— Artexias 05

2

Для меня ошибка «Указанный порт используется» обычно исправляется (на самом деле хорошо проработана) путем остановки службы « Общий доступ к подключению к Интернету ( ICS )» (SharedAccess) и «Служба публикации в Интернете» ( W3SVC ).

После запуска проекта / ISS Express остановленные службы можно снова запустить без проблем.

Всякий раз, когда я получаю сообщение об ошибке, порт (в диапазоне 50000) определенно не используется (проверено с помощью netstat и tcpview).

Было бы неплохо, если бы Microsoft провела некоторое интеграционное тестирование Visual Studio / IIS Express вместе с HyperV и «нормальной» службой IIS ИЛИ дала бы некоторые рекомендации о том, какие диапазоны портов использовать для VS / IIS Express (и каких портов следует избегать).


Это была моя проблема, и мне потребовалось много времени, чтобы ее отследить, потому что ICS, очевидно, не отображается в netstat или Resource Monitor. Благодаря! Глупый $% @ * &&!) $ *!
— Джеймс

Большое спасибо за размещение этого. Это единственное, что у меня сработало. Я думаю, это произошло в промежутке между работой по разработке веб-приложений и последующим решением поделиться своим интернет-соединением телефона Android через USB с моим компьютером. И я пробовал все, от идеи <netsh http add iplisten ipaddress = ::> выше (что-то ломается и его нужно удалить), до попытки удалить зарезервированный диапазон (получить доступ запрещен даже в качестве администратора). Перезапуски, закрытие веб-браузеров и т. Д. Не работали, пока я не попробовал это, так что еще раз спасибо.
— Алистер Смит

1

Для меня браузер Google Chrome был процессом, который использовал порт. Даже после того, как я закрыл Chrome, я обнаружил, что процесс все еще сохраняется (я разрешаю Chrome работать в фоновом режиме, чтобы получать уведомления на рабочем столе). Я вошел в диспетчер задач и убил процесс браузера Chrome, а затем запустил свое веб-приложение, оно сработало как шарм.


1

Для меня закрыть все приложения и перезагрузить компьютер.

При запуске окна сначала откройте Visual Studio, затем откройте браузер и нажмите «Выполнить» (F5).

Теперь это работает. Не знаю почему.


1

Откройте свой csproj, например, с помощью Notepad ++ и прокрутите вниз до DevelopmentServerPort. Измените его на что-то другое, если оно выше 1024, как рекомендовано (например, 22312). Также измените IISUrl на http: // localhost: 22312 / . Сохраните изменения и перезапустите проект.


1

В моем случае не было приложения, использующего указанный порт, и запуск Visual Studio с повышенными правами тоже не помог.

У меня сработало переустановить IIS Express, а затем перезагрузить компьютер.


Это был единственный вариант, который у меня сработал в Windows 10 1809 с VS 2017.
— Holistic Developer


1

Вам необходимо настроить этот параметр, выполнив в административной командной строке следующее:

netsh http добавить iplisten ipaddress = ::


0

Для меня netstat помог мне показать, что у меня запущен Fiddler, который держит порт открытым.


1
Не могли бы вы объяснить немного больше?
— Dieter Meemken

0

щелкните уведомление в нижней части панели задач, если вы получаете сообщение об ошибке, например, о используемом порту, затем щелкните значок iiss правой кнопкой мыши, затем щелкните по выходу, для меня это работает как шарм


0

В сообщении об ошибке должно быть указано, какое приложение уже использует порт - в моем случае это был explorer.exe, так что это был просто случай перезапуска проводника из диспетчера задач.


0

У меня была такая же ошибка. Моя веб-служба была настроена как приложение в IIS, и я исправил ее:

Щелкните правой кнопкой мыши мой проект WebService внутри моего решения> Свойства> Интернет> В разделе «Серверы» смените IIS Express на локальный IIS (он автоматически создаст виртуальный каталог, который вам нужен)


0

Когда порт xxxx уже используется, всегда указывается PID (идентификатор процесса) с ошибкой. Просто зайдите в диспетчер задач на компьютере, на котором запущено приложение, нажмите «Детали», и вы определите, что это за другое приложение. Затем вы можете решить, хотите ли вы завершить этот процесс или нет.


0

Чтобы добавить к этому, у меня была включена полная функция IIS для одной из моих машин, и, похоже, это происходило с перерывами.

Я также получил случайные жалобы на то, что через некоторое время мне нужны права администратора для привязки сайтов, я предполагаю, что каким-то образом он смотрел на полную конфигурацию IIS (что требует администратора, поскольку это не файл для каждого пользователя).

Если вы застряли и больше ничего не помогает (и вы не хотите просто выбирать другой порт), проверьте, удалили ли вы его, если он присутствует.


0

FWIW, я перепробовал множество этих вариантов, и у меня ничего не вышло. Затем я понял, что установил VMWare Player незадолго до того, как возникла проблема. Я удалил его, и эта ошибка исчезла.

Я уверен, что есть способ заставить их сосуществовать, но мне действительно не нужен Player, поэтому я просто удалил его. Если вы пробовали всевозможные вещи, но это не работает, попробуйте просмотреть все программы, которые вы недавно установили (особенно те, которые имеют дело с сетевыми адаптерами?), И посмотрите, приведет ли это вас к чему-либо.


0

В Visual Studio 2017 выберите Проект / Свойства, а затем выберите вариант Интернет. В разделе IIS рядом с URL-адресом проекта по умолчанию щелкните «Создать виртуальный каталог». Это решило проблему для меня. Я думаю, что в моем случае виртуальный каталог проекта по умолчанию был каким-то образом поврежден после сеанса отладки.


0

Чтобы решить эту проблему, выполните следующие действия:

  1. Откройте CMD в режиме администратора
  2. Затем выполните команду netsh http add iplisten ipaddress = ::

  3. После запуска проекта

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.