Чому і як це виправити? IIS Express “Використовується зазначений порт”


81

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

Використовується зазначений порт

Порт 10360 вже використовується іншою програмою.

Рекомендації

  1. Спробуйте перейти на порт, відмінний від 10360 і вище 1024.
  2. Зупиніть програму, яка використовує порт 10360.

Я можу це виправити Recommendation #1, змінивши порт на щось інше, наприклад 13333. Але мені дуже цікаво, що сталося з портом 10360. Як я можу перевірити, яка програма використовує порт 10360? Як я можу зупинити цю програму?


у мене була та ж проблема. Моя проблема полягала в тому, що у мене було кілька веб-проектів з однаковим рішенням. Хоча вони і не бігали. Один з інших проектів використовував той самий порт. Просто переконайтеся, що будь-який проект використовує власний порт.
Загроза

Відповіді:


52

я вирішую проблему таким чином ...

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

Після цього виберіть Місцевий IIS на веб-сайті IIS Express, видаліть небажаний проект.

сподіваюся, це допоможе.


4
Після цього мені довелося перезапустити.
angrydust

4
Де вибрано Місцевий IIS на сайті IIS Express
Пракаш Джоші

2
Цей крок не вирішив моєї проблеми. Виконавши кроки, я також перезапустив Visual Studio, але ніякого посилення не отримав.
user1451111

Після цього я отримую повідомлення про помилку "неможливо підключитися до веб-сервера iisexpress" при спробі запустити рішення.
Енріко

37
  1. змініть його в розчині (клацніть правою кнопкою миші) -> властивість -> веб- вкладка
  2. Натисніть Створити віртуальний каталог (перед текстовим полем URL-адреси проекту)

Зміна порту IIS Express для фіксації використовуваного порту


1
Я не хочу змінювати свою сторінку властивостей .sln знову і знову. У моєму випадку порт, визначений на сторінці властивостей (як ви показали вище), блокується, коли я роблю щось у Visual Studio, що спричиняє збій Visual Studio.
bkwdesign

@bkwdesign, я поняття не маю про збій, можливо, вам слід запустити Admin Privilege, а також створити віртуальний каталог або оновити 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
DUDE Це не тільки правильна відповідь, ви насправді пояснили це, а не просто скинули скрипт CMD (що, в більшості випадків, добре). Щиро дякую, проголосував би за 100 разів, якби міг.
Райанман

1
Дякую, це сталося зі мною після встановлення докера.
MaxPower,

1
Це мене врятувало, я проводив усі свої дні і був дуже розчарований. Це призводить мене до правильного рішення. github.com/docker/for-win/issues/3171#issuecomment-459205576
Мухаммад Кашиф

Мав цю проблему через Hyper-V. Дякую за це!
DylanSp

28

У мене була та ж проблема, але жоден процес не з'явився ні в netstat, ні в resmon.

Що вирішило проблему, це закриття всіх відкритих вікон браузера.


1
Ого. Це спрацювало і на мене. Хтось може пояснити, чому?
ВСС

Підтвердження того, що це іноді вирішує проблему (використання Firefox як стандартного браузера), і це абсолютно не має сенсу.
Флоріан Зима

4
Це не спрацювало для мене. Немає запущених програм. Просто порт, що використовується. Немає запущених веб-сторінок. Просто помилка. Який біль.
Майк

2
Я думаю, що причина цього працює в тому, що ви робите веб-запит, щоб браузер використовував довільний номер вихідного порту (зазвичай між 49152 - 65535), і це суперечить порту, налаштованому в IIS
Х'ю Джеффнер,

Це спрацювало і у мене. Це не мало сенсу, оскільки програма, що блокувала порт, не мала підстав використовувати її.
Джеймс Вестгейт,

28

Це переслідувало мене більше року!

Для мене,

  • на жодному веб-сайті не працював iin IIS Express
  • ніщо не використовувало порт, як було визначено запуском: netstat -anoу командному рядку.

Рішенням було запустити

netsh http add iplisten ipaddress=::

з командного рядка.

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


не маю уявлення, що сталося, не знаю, що робить ця команда, але це спрацювало там, де інші рішення тут не вдалися
sksallaj

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заявку. Дякую.
Блез

9
Ця команда буде генерувати багато шуму, тому, якщо ви хочете перейти прямо до програми, що порушує, передайте результати до findstr так:netstat -aob | findstr '10360'
kmkemp

1
Всі інші відповіді відправили мене в ліс, ця насправді дозволила мені знайти джерело та виправити проблему.
Х'ю Джеффнер,

Крім того, ви можете використовувати nestat -aob -p TCP для перегляду лише портів TCP
Shiroy

12
  1. Закрийте VS
    1. Почніть знову - клацніть правою кнопкою миші та запустіть як адміністратор
    2. Запустіть свій проект ще раз.

якщо припустимо, що цей порт використовується якимось іншим процесом, змінюється порт у проекті> властивості> налагодження, а потім виконується, як працює адміністратор
Номан Чалі

Це досить сумно, але це спрацювало. Більше нічого не працювало. Помилка абсолютно помилкова, оскільки у мене не було запущених процесів під відповідним портом. Здається, це помилка Visual Studio та IISExpress. Немає сенсу, чому мені довелося закрити його і запустити знову.
Mike

Цей крок не вирішив моєї проблеми.
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

будь-яка ідея, чому певний діапазон блокується?
J Santosh

4
  1. Видаліть файл .sln, якщо він у вас є.
  2. Відкрийте файл C: \ Users \ NN \ Documents \ IISExpress \ config \ applicationhost.config
  3. Знайдіть проблемний сайт у конфігурації / system.applicationHost / сайти та видаліть весь розділ сайту.
  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 System Tray' та 'IIS Express Worker Process' і повторно запустіть проект

Подробиці процесу диспетчера завдань


2

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

  • Закрийте всі файли, які ви відкрили в Visual Studio.
  • Потім закрийте програму та закрийте Visual Studio.
  • Відкрийте Visual Studio, і він повинен успішно запуститися.

Сподіваюся, це допоможе.


2
Це не має нічого спільного з портами. Прочитайте питання, будь ласка.
UmarZaii

я вже прочитав питання, тоді лише відповідаю, що це трапилось і зі мною, і я зробив те саме, що написав у дописі, і це працює для мене.
saurav singh

Я думаю, тоді все гаразд.
UmarZaii

Це мені це виправило. Так багато проблем вирішується лише перезапуском Visual Studio.
CapnChaos

Це просто виправило це для мене. Я поняття не маю, на що скаржиться UmarZaii.
Artexias

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 add iplisten ipaddress = ::


0

Для мене netstat зробив фокус, щоб показати мені, що у мене запущений Fiddler, який тримав порт відкритим.


1
Ви можете пояснити трохи більше?
Дітер Меемкен,

0

клацніть на сповіщення внизу панелі завдань, якщо ви отримаєте помилку, як порт, що використовується, потім виберіть піктограму iiss, клацніть правою кнопкою миші, потім клацніть на вихід, це працює як для мене


0

Повідомлення про помилку повинно повідомити вам, яка програма вже використовує порт - у моєму випадку це було explorer.exe, тож це було лише випадком перезапуску провідника з диспетчера завдань.


0

У мене виникла така сама помилка. У мене була встановлена ​​моя веб-служба як програма в IIS, і я виправив це за допомогою:

Клацніть правою кнопкою миші на моєму проекті WebService всередині мого рішення> Властивості> Веб> У розділі «Сервери» перейдіть із IIS Express на Локальний IIS (він автоматично створить віртуальний каталог, який вам потрібен)


0

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


0

Щоб лише додати до цього, у мене була ввімкнена повна функція IIS для однієї з моїх машин, і це, здавалося, спричиняло періодично.

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

Якщо ви застрягли і ніщо інше не допомагає (і ви не хочете просто вибрати інший порт), перевірте, чи видалено це, якщо воно є.


0

FWIW, я спробував безліч цих варіантів і нікуди не дійшов. Тоді я зрозумів, що встановив VMWare 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.