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.