Почему и как исправить? 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 не было никаких успехов.

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

Clangon
источник
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 (при необходимости)

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

Навин Кумар V
источник
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

Запуск Visual Studio в административном режиме решил мою проблему

Муджтаба Заиди
источник
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» и повторно запустите проект.

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

SumairIrshad
источник
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).

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

OammieR
источник
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 = ::

Md. Rizwanul Islam
источник
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-адресом проекта по умолчанию щелкните «Создать виртуальный каталог». Это решило проблему для меня. Я думаю, что в моем случае виртуальный каталог проекта по умолчанию был каким-то образом поврежден после сеанса отладки.

user3615720
источник
0

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

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

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

Сумант Сингх
источник