Dlaczego i jak to naprawić? IIS Express „Określony port jest używany”


82

Wiemy, że do aplikacji internetowej w programie Visual Studio przypisany jest losowy numer portu. Działa dobrze na moim biurku. Ale kiedy ściągam kod na laptopa (z VisualStudio.com) i uruchamiam aplikację internetową. Dostałem wiadomość mówiącą:

Określony port jest używany

Port 10360 jest już używany przez inną aplikację.

Zalecenia

  1. Spróbuj przełączyć się na port inny niż 10360 i wyższy niż 1024.
  2. Zatrzymaj aplikację korzystającą z portu 10360.

Mogę to naprawić, Recommendation #1zmieniając port na inny, np. 13333. Ale jestem bardzo ciekawy, co się stało z portem 10360. Jak mogę sprawdzić, która aplikacja używa portu 10360? Jak mogę zatrzymać tę aplikację?


miałem ten sam problem. Mój problem polegał na tym, że miałem kilka projektów internetowych w tym samym rozwiązaniu. Chociaż nie biegali. Jeden z pozostałych projektów korzystał z tego samego portu. Po prostu upewnij się, że dany projekt używa własnego portu.
Menace

Odpowiedzi:


52

rozwiązuję problem w ten sposób ...

Plik -> Otwórz -> Witryna sieci Web ... wprowadź opis obrazu tutaj

Następnie wybierz Lokalne IIS w witrynie IIS Express i usuń niechciany projekt.

Mam nadzieję, że to pomoże.


4
Po wykonaniu tej czynności musiałem ponownie uruchomić.
angrydust

4
Gdzie jest wybierz Lokalne IIS w witrynie IIS Express
Prakash Joshi

2
Ten krok nie rozwiązał mojego problemu. Po wykonaniu tych kroków ponownie uruchomiłem Visual Studio, ale bez zysku.
user1451111

Po wykonaniu tej czynności pojawia się błąd „nie można połączyć się z serwerem WWW iisexpress” podczas próby uruchomienia rozwiązania.
Enrico

37
  1. zmień to w rozwiązaniu (prawy przycisk myszy) -> właściwość -> zakładka web
  2. Kliknij opcję Utwórz katalog wirtualny (przed polem tekstowym adresu URL projektu)

Zmiana portu IIS Express w celu naprawienia portu w użyciu


1
Nie chcę ciągle zmieniać mojej strony właściwości .sln. W moim przypadku port zdefiniowany na stronie właściwości (jak pokazano powyżej) zostaje zablokowany, gdy zrobię coś w programie Visual Studio, co powoduje awarię programu Visual Studio.
bkwdesign

@bkwdesign, nie mam pojęcia o katastrofie, być może należy uruchomić z uprawnieniami administratora uprawnień, a także utworzyć katalog wirtualny lub zaktualizować do najnowszej wersji VS lub w ostatniej wystarczy przełączyć do standardu IIS Rola
Iman

30

Miałem podobny problem podczas uruchamiania programu Visual Studio 2019 w systemie Windows 10. Niektóre rozwiązania, które działały u innych, obejmowały:

  1. Zmiana numeru portu aplikacji.
  2. Program Visual Studio powinien automatycznie przypisywać numer portu przy każdym uruchomieniu aplikacji.
  3. Uruchom ponownie program Visual Studio
  4. Zrestartuj komputer.

Niestety żadne z tych rozwiązań nie działało dla mnie, przypisanie innego numeru portu działało, ale nie było rozwiązaniem akceptowalnym, ponieważ ważne było, aby moja aplikacja działała na określonym porcie.

Rozwiązanie

Najpierw uruchomiłem polecenie:

netsh http add iplisten ipaddress=::

z podwyższonego procesu wiersza polecenia. To rozwiązało początkowy błąd, kiedy próbowałem uruchomić aplikację, nie otrzymałem już błędu „port w użyciu”, zamiast tego pojawił się błąd informujący, że aplikacja nie może połączyć się z portem, ponieważ wymagane są uprawnienia administratora. (chociaż korzystałem z Visual Studio jako administrator)

Drugi błąd został spowodowany przez Hyper-V, który dodaje porty do zakresu wykluczeń portów, port używany przez moją aplikację znajdował się w jednym z tych zakresów wykluczeń. Możesz wyświetlić te porty, uruchamiając następujące polecenie:netsh interface ipv4 show excludedportrange protocol=tcp

Aby rozwiązać ten drugi błąd:

  1. Wyłącz Hyper-V: Panel sterowania-> Programy i funkcje-> Włącz lub wyłącz funkcje systemu Windows. Odznacz Hyper-V
  2. Zrestartuj komputer.
  3. Dodaj używany port do zakresu wykluczeń portów: netsh int ipv4 add excludedportrange protocol=tcp startport=50403 numberofports=1 store=persistent
  4. Włącz ponownie Hyper-V
  5. Zrestartuj komputer

Stąd wszystko działało idealnie.


Wow, jedyna rzecz, która doprowadziła mnie do rozwiązania. Wyłączenie Hyper-V dało mi Windows 10 frowny BSOD dzięki kompilacji korporacyjnej, ale dzięki temu netsh interface ipv4 show excludedportrange protocol=tcpprzynajmniej mogłem wybrać nowy port dla projektu.
SharpC

1
DUDE Nie tylko była to poprawna odpowiedź, ale właściwie to wyjaśniłeś, zamiast po prostu zrzucić skrypt CMD (co przy okazji jest w porządku w większości przypadków). Dziękuję bardzo, zagłosowałbym za 100x, gdybym mógł.
Ryanman,

1
Dziękuję, przytrafiło mi się to po zainstalowaniu dockera.
MaxPower

1
To mnie uratowało, spędziłem wszystkie dni i byłem bardzo sfrustrowany. To prowadzi mnie do właściwego rozwiązania. github.com/docker/for-win/issues/3171#issuecomment-459205576
muhammad kashif

Miałem ten problem z powodu Hyper-V. Dzięki za to!
DylanSp

28

Miałem ten sam problem, ale żaden proces nie pojawił się ani w netstacie, ani w resmon.

Rozwiązaniem dla mnie było zamknięcie wszystkich otwartych okien przeglądarki.


1
Łał. Dla mnie to też zadziałało. Czy ktoś może wyjaśnić, dlaczego?
SJC

Potwierdzenie, że to czasami rozwiązuje problem (używając Firefoksa jako standardowej przeglądarki) i nie ma to absolutnie żadnego sensu.
Florian Winter,

4
To mi nie pomogło. Brak uruchomionych aplikacji. Tylko port w użyciu. Brak uruchomionych stron internetowych. Tylko błąd. Co za ból.
Mike,

2
Myślę, że powodem tego jest to, że podczas wysyłania żądania internetowego przeglądarka używa dowolnego numeru portu źródłowego (zwykle między 49152-65535) i jest to sprzeczne z portem skonfigurowanym w IIS
Hugh Jeffner

Dla mnie to też zadziałało. Nie miało to sensu, ponieważ aplikacja blokująca port nie miała powodu, aby go używać.
James Westgate

28

To prześladowało mnie przez ponad rok!

Dla mnie,

  • na żadnej stronie internetowej nie był uruchomiony program iin IIS Express
  • nic nie korzystało z portu określonego przez uruchomienie: netstat -anow wierszu poleceń.

Rozwiązaniem było biec

netsh http add iplisten ipaddress=::

z wiersza poleceń.

Szczęśliwe dni i uznanie dla: Jamesa Bryanta! https://developercommunity.visualstudio.com/content/problem/110767/specified-port-is-in-use.html


nie mam pojęcia, co się stało, nie mam pojęcia, co robi to polecenie, ale zadziałało tam, gdzie inne rozwiązania zawiodły
sksallaj

4
To polecenie zepsuło moje usługi IIS, uważaj, uruchamiając to. Musiałem uruchomić netsh http delete iplisten ipaddress = ::, aby moje lokalne witryny IIS znów działały.
Steve

Zepsuło również moje IIS, zaczęło mówić, że do działania potrzebne są uprawnienia administracyjne. Musiałem to cofnąć.
jswetzen

Dla tych, którzy mają problemy z uprawnieniami administratora, spójrz na odpowiedź @Philip Trenwith, mogą to być wykluczone zakresy portów Hyper-V.
IronSean

18

Szukasz netstat.

Otwórz powłokę poleceń administracyjnych i uruchom

netstat -aob

I poszukaj portu 10360. Pokaże ci, który plik wykonywalny otworzył port i jaki PID do wyszukania w Menedżerze zadań. (Właściwie netstat -?najpierw uruchom w nieuprzywilejowanej powłoce, ponieważ nie zgadzam się na ślepe uruchamianie czegokolwiek, czego nie rozumiesz, szczególnie w uprzywilejowanym kontekście).

Oto, co robią przełączniki:

-a pokazuje wszystkie połączenia lub otwarte porty, a nie tylko aktywne - port, który chcesz, prawdopodobnie nasłuchuje, a nie jest aktywny.

-opokazuje PID będący właścicielem połączenia lub portu, dzięki czemu można znaleźć proces na karcie Procesy Menedżera zadań. (Może być konieczne dodanie kolumny PID w Menedżerze zadań. Widok-> Wybierz kolumny)

-bpokazuje plik binarny zaangażowany w otwieranie połączenia lub portu. To jest ten, który wymaga podwyższonego dostępu.


To fajne. Teraz przynajmniej mam PIDaplikację. Dzięki.
Blaise,

9
To polecenie wygeneruje dużo szumu, więc jeśli chcesz przejść bezpośrednio do netstat -aob | findstr '10360'
powodującej problem

1
Wszystkie inne odpowiedzi wysłały mnie do lasu, a ta faktycznie pozwoliła mi znaleźć źródło i rozwiązać problem.
Hugh Jeffner

Możesz również użyć nestat -aob -p TCP, aby wyświetlić tylko porty TCP
Shiroy,

12
  1. Zamknij VS
    1. Zacznij ponownie - kliknij prawym przyciskiem myszy i uruchom jako administrator
    2. Uruchom ponownie projekt.

jeśli przypuśćmy, że port jest używany przez inny proces, zmienia port w projekcie> właściwości> debug, a następnie uruchamia się tak, jak działa administrator
Noman Chali

To dość smutne, ale to zadziałało. Nic innego nie działało. Błąd jest całkowicie błędny, ponieważ nie miałem uruchomionych procesów w tym porcie. Wygląda na to, że jest to błąd z programu Visual Studio i IISExpress. Nie ma sensu, dlaczego musiałem go zamknąć i ponownie uruchomić.
Mike

Ten krok nie rozwiązał mojego problemu.
user1451111

Zadowolony i zaniepokojony, że jedno uruchomienie administratora wystarczyło po ponownym uruchomieniu, zmianach portów, zabójstwach procesów, polowaniach na netstat, zmianach iplisten. Kontynuowano pracę po uruchomieniu jako użytkownik.
Richard

10

PROSTE ROZWIĄZANIE, KTÓRE DZIAŁAŁO DLA MNIE: (Kredyty za kombinację odpowiedzi innych)

**My System Info:**
Windows 10 build : 1809
IIS Version      : 10.0.17763.1
Hyper-V          : Enabled
Docker           : Installed - 2.3.0.2 (45183)
  • Sprawdź zakres zablokowanych portów w CMD (admin)

    >> 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 ...
    
  • Otwórz program Visual Studio i przejdź do> projektu> właściwości> sieci Web> serwerów> adresu URL projektu

  • Użyj portu, który nie jest zablokowany.

    (Sample port):
    http://localhost:49796/
    
  • Uruchom ponownie program Visual Studio (jeśli jest to wymagane)

  • Napij się kawy i podziel się miłością. (wymagany) :)


3
To jest niesamowite! Dziękuję
Grandizer

masz pojęcie, dlaczego pewien zakres jest blokowany?
J Santosh

4
  1. Usuń plik .sln, jeśli taki masz.
  2. Otwórz plik C: \ Users \ NN \ Documents \ IISExpress \ config \ applicationhost.config
  3. Znajdź problematyczną witrynę w configuration / system.applicationHost / sites i usuń całą sekcję witryny.
  4. „Otwórz witrynę sieci Web ..” z programu Visual Studio, a projekt otrzyma losowy nowy port.

To wciąż najlepsze rozwiązanie.
Vincent

3

Jeśli netstat nic nie pokazuje, spróbuj ponownie uruchomić komputer.

Dla mnie nic nie pojawiło się w netstacie dla mojego portu. Próbowałem zamknąć okna przeglądarki Google Chrome, jak sugerowali @Clangon i @JT Taylor, ale bezskutecznie.

Ostatecznie jednak restart systemu zadziałał, więc mogę tylko założyć, że coś innego potajemnie blokowało otwarty port. A może po prostu trwało to dłużej, niż byłem gotowy czekać na zwolnienie portów po zamknięciu Chrome.


Dokładnie mój scenariusz!
user1451111


3

netstat nie pokazał niczego już używającego portu

netstat -ano | findstr <your port number>nic mi nie pokazał. Dowiedziałem się, że port został wykluczony za pomocą tego polecenia, aby zobaczyć, jakie zakresy są zarezerwowane przez coś innego:

netsh interface ipv4 show excludedportrange protocol=tcp

Możesz spróbować odblokować zakres z portu początkowego dla wielu portów (potrzebujesz wiersza polecenia z administratorem):

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

Jednak w moim przypadku nie mogłem odblokować zakresu, właśnie otrzymałem komunikat „Odmowa dostępu”, więc ostatecznie musiałem wybrać inny port dla mojej witryny.

Moje oryginalne rozwiązanie: jedyną rzeczą, która działała, było usunięcie folderu .vs w folderze rozwiązania. (Od tego czasu odkryłem, że możesz po prostu usunąć plik .vs / config / applicationhost.config, aby uniknąć utraty tak wielu ustawień).


Myślałem, że to rozwiązanie będzie działać dobrze, ale nadal otrzymuję błąd. Ten port (3333) w ogóle nie pojawia się w netstat -a.
Chris Walsh,

1
@ChrisWalsh ten problem wystąpił ponownie i znalazłem dodatkowe informacje dlaczego, więc zaktualizowałem moją odpowiedź. Możesz być na tej samej łodzi co ja, port nie był używany, ale zarezerwowany (wykluczony) przez coś innego.
John Leonard

2

Otwórz Menedżera zadań i po prostu zamknij wszystkie procesy „IIS Express System Tray” i „IIS Express Worker Process” i ponownie uruchom projekt

Szczegóły procesu Menedżera zadań


2

Visual Studio 2015

  • Zamknij wszystkie pliki otwarte w programie Visual Studio.
  • Następnie zamknij aplikację i zamknij program Visual Studio.
  • Otwórz program Visual Studio i powinien zostać pomyślnie uruchomiony.

Mam nadzieję, że to pomoże.


2
Nie ma to nic wspólnego z portami. Przeczytaj proszę pytanie.
UmarZaii

już przeczytałem pytanie, tylko odpowiadam, że mi się też stało i zrobiłem to samo co napisałem w poście i to działa dla mnie.
saurav singh

Myślę, że to w porządku.
UmarZaii

To naprawiło to dla mnie. Tak wiele problemów można rozwiązać, ponownie uruchamiając program Visual Studio.
CapnChaos

To właśnie naprawiło to dla mnie. Nie mam pojęcia, na co narzeka UmarZaii.
Artexias

2

U mnie błąd „Określony port jest używany” jest zwykle naprawiany (dobrze działa) przez zatrzymanie usługi „Udostępnianie połączenia internetowego ( ICS )” ( Dostęp współdzielony ) i „Usługa publikowania w sieci World Wide Web” ( W3SVC ).

Po uruchomieniu projektu / ISS Express zatrzymane usługi można ponownie uruchomić bez problemów.

Ilekroć otrzymuję błąd, port (z zakresu 50000) jest zdecydowanie nieużywany (sprawdzane za pomocą netstat i tcpview).

Byłoby miło, gdyby Microsoft przeprowadził testy integracyjne Visual Studio / IIS Express wraz z HyperV i „zwykłą” usługą IIS LUB dał wskazówki, które zakresy portów używać dla VS / IIS Express (i których portów unikać).


To był mój problem i trwało to wieczność, ponieważ ICS najwyraźniej nie pojawia się w netstacie ani w Monitorze zasobów. Dzięki! Głupi $% @ * &&!) $ *!
James

Dziękuję bardzo za opublikowanie tego. To jedyna rzecz, która działała dla mnie. Wydaje mi się, że stało się to między pracami związanymi z tworzeniem aplikacji internetowych, a następnie udostępnieniem połączenia internetowego telefonu z Androidem przez USB na moim komputerze. I próbowałem wszystkiego, od pomysłu <netsh http add iplisten ipaddress = ::> powyżej (psuje wszystko i musi zostać usunięty), do próby usunięcia zarezerwowanego zakresu (odmowa dostępu nawet jako administrator). Ponowne uruchamianie, zamykanie przeglądarek internetowych itp. Nie działało, dopóki tego nie spróbowałem, więc jeszcze raz dziękuję.
Alister Smith

1

Dla mnie przeglądarka Google Chrome była procesem korzystającym z portu. Nawet po zamknięciu przeglądarki Chrome zauważyłem, że proces nadal się powtarzał (pozwalam Chrome „działać w tle”, aby otrzymywać powiadomienia na pulpicie). Wszedłem do Menedżera zadań i zabiłem proces przeglądarki Chrome, a następnie uruchomiłem aplikację internetową, działała jak urok.


1

U mnie zamknij wszystkie aplikacje i uruchom ponownie komputer.

Po uruchomieniu okna najpierw otwórz program Visual studio, a następnie otwórz przeglądarkę i kliknij uruchom (F5).

Teraz działa. Nie wiem dlaczego.


1

Otwórz csproj za pomocą na przykład Notepad ++ i przewiń w dół do DevelopmentServerPort. Zmień to na coś innego, o ile jest powyżej 1024, jak zalecane (na przykład 22312). Zmień także IISUrl na http: // localhost: 22312 / . Zapisz zmiany i zrestartuj projekt.


1

W moim przypadku nie było aplikacji korzystającej z określonego portu, a podwyższone działanie Visual Studio też nie pomogło.

Pomogło mi ponowne zainstalowanie IIS Express i ponowne uruchomienie komputera.


To była jedyna opcja, która działała dla mnie w systemie Windows 10 1809 z VS 2017.
Holistic Developer


1

Musisz skonfigurować ten parametr, uruchamiając następujące polecenie w administracyjnym wierszu polecenia:

netsh http dodaj iplisten ipaddress = ::


0

Dla mnie netstat pokazał mi, że mam uruchomionego Fiddlera, który utrzymywał otwarty port.


1
Czy możesz wyjaśnić trochę więcej?
Dieter Meemken

0

kliknij powiadomienie na dole paska zadań, jeśli otrzymujesz błąd, taki jak używany port, a następnie wybierz ikonę iiss kliknij prawym przyciskiem myszy, a następnie kliknij przycisk Zakończ, dla mnie działa jak urok


0

Komunikat błędu powinien powiedzieć, która aplikacja już korzysta z portu - w moim przypadku był to explorer.exe, więc był to tylko przypadek ponownego uruchomienia eksploratora z poziomu menedżera zadań.


0

Pojawił się ten sam błąd. Ustawiłem moją usługę sieciową jako aplikację w IIS i naprawiłem to przez:

Kliknij prawym przyciskiem myszy mój projekt WebService w moim rozwiązaniu> Właściwości> Sieć> W obszarze „Serwery” zmień z IIS Express na Lokalne IIS (automatycznie utworzy katalog wirtualny, który chcesz)


0

Gdy port xxxx jest już używany, zawsze pojawia się identyfikator PID (identyfikator procesu) z błędem. Po prostu przejdź do menedżera zadań na komputerze, na którym uruchamiasz aplikację, kliknij szczegóły, a zidentyfikujesz drugą aplikację. Możesz wtedy zdecydować, czy chcesz zakończyć ten proces, czy nie


0

Aby dodać do tego, miałem włączoną pełną funkcję IIS na jednym z moich komputerów i wydawało się, że powoduje to sporadycznie.

Otrzymałem również przypadkowe skargi na to, że po pewnym czasie potrzebuję praw administratora do wiązania witryn, zakładam, że w jakiś sposób przeglądał pełną konfigurację IIS (co wymaga administratora, ponieważ nie jest to plik dla użytkownika).

Jeśli utkniesz i nic innego nie pomaga (i nie chcesz po prostu wybrać innego portu), sprawdź, czy usunąłeś ten port, jeśli jest obecny.


0

FWIW, wypróbowałem mnóstwo tych opcji i do niczego nie doszedłem. Potem zdałem sobie sprawę, że zainstalowałem VMWare Player tuż przed rozpoczęciem problemu. Odinstalowałem go i ten błąd zniknął.

Jestem pewien, że istnieje sposób, aby współistnieć, ale tak naprawdę nie potrzebuję Playera, więc po prostu go usunąłem. Jeśli próbowałeś różnych rzeczy i nie działa, rozważ przejrzenie jakichkolwiek ostatnio zainstalowanych programów (szczególnie tych, które obsługują karty sieciowe?) I sprawdź, czy to dokądkolwiek Cię zaprowadzi.


0

W programie Visual Studio 2017 wybierz projekt / właściwości, a następnie wybierz opcję sieci Web. W sekcji IIS obok domyślnego adresu URL projektu kliknij opcję Utwórz katalog wirtualny. To rozwiązało problem. Myślę, że w moim przypadku domyślny katalog wirtualny projektu został w jakiś sposób uszkodzony po sesji debugowania.


0

Aby rozwiązać ten problem, wykonaj poniższy krok:

  1. Otwórz CMD uruchom w trybie administratora
  2. Następnie wykonaj polecenie netsh http add iplisten ipaddress = ::

  3. Po uruchomieniu projektu

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.