„Nie można uruchomić serwera sieci Web IIS Express”. w programie Visual Studio

108

Próbowałem uruchomić moją usługę sieciową za pośrednictwem programu Visual Studio. Napotkałem problem taki jak:

---------------------------
Microsoft Visual Studio
---------------------------
Unable to launch the IIS Express Web server.

Failed to register URL "http://localhost:63591/" for site "xxxxxx" application
"/". Error description: The process cannot access the file because it is being
used by another process. (0x80070020)

---------------------------
OK   
---------------------------

Widziałem menedżera zadań i stwierdziłem, że PID 4 jest używany przez System, a jego opis to, NT Kernel & System. więc próbowałem zatrzymać http service. Wszystkie usługi zależności zostały zatrzymane. Ale mam problem z zatrzymaniem usługi http, takiej jak

The service is starting or stopping.  Please try again later.

Próbowałem więc zatrzymać i uruchomić usługę ręcznie. Ale proces End jest wyłączony. Byłoby pomocne, gdyby ktoś mógł pomóc w tej sprawie

Priya
źródło
1
widząc problem po aktualizacji systemu Windows 10: developercommunity.visualstudio.com/content/problem/580466/ ...
Xiao

Odpowiedzi:

131

Z https://www.davidsalter.co.uk/unable-to-launch-the-iis-express-web-server-error-0x80070020/

Kod błędu 0x80070020oznacza ERROR_SHARING_VIOLATION, co w przypadku IIS Express (lub IIS) oznacza, że ​​port, na którym próbuje nasłuchiwać, jest używany przez inny proces.

Użyj netstatpolecenia, aby dowiedzieć się, która aplikacja korzysta z portu.

netstat -ao | findstr <port_number_to_search_for>

aParametr mówi netstat, aby wyświetlić wszystkie połączenia i porty słuchania.

oParametr mówi netstat, aby wyświetlić identyfikator procesu związanego z połączeniem.

Uruchomienie powyższego polecenia netstat spowoduje wyświetlenie danych wyjściowych, takich jak:

C:\>netstat -ao | findstr 4026
TCP    12.0.0.1:4026        cs-pc:4026         LISTENING       9544

Ostatnia wyświetlana liczba (tutaj 9544) to identyfikator procesu.

Chris Schiffhauer
źródło
11
Świetna odpowiedź! Nie tylko opisujesz rozwiązanie, ale także podajesz znaczenie parametrów. Chciałbym, żeby wszystkie odpowiedzi były takie!
Christian Payne,
8
Pomogło mi to i okazało się, że problematyczny PID to Chrome.exe. Zrestartowałem Chrome i problem zniknął.
astrosteve
1
Świetna odpowiedź. Używając tego stwierdziłem, że skype nasłuchuje zarówno na porcie 80, jak i porcie 443. Zabiłem skype i mogłem wtedy uruchomić iisexpress normalnie, pokazując teraz moje dodatkowe powiązania dla portów 80 i 443
Alastair
3
uruchom w podwyższonym oknie cmd, TASKKILL /PID 2756 /Fzastąp 2756swoim identyfikatorem procesu
stackoverfloweth
13
Można to również znacznie przyspieszyć za pomocą -nprzełącznika - wykorzystuje on wyjście „numeryczne”, co oznacza, że ​​nie marnuje czasu na wysyłanie zapytań do DNS w celu przekształcenia adresów IP w nazwy hostów.
Tullo_x86
52

Miałem podobny problem podczas próby uruchomienia projektu z Visual Studio 2019 na Windows 10. Aplikacja nie mogła się uruchomić, ponieważ port był najwyraźniej używany przez inny proces. Jednak netstatpolecenie wykazało, że port nie był używany przez żadną aplikację.

Po 2 dniach szukania w Google znalazłem rozwiązanie, które działało dla mnie. Port, którego próbowałem użyć, znajdował się w wykluczonym zakresie portów, który można zobaczyć, uruchamiając polecenie:

netsh interface ipv4 show excludedportrange protocol=tcp

Winowajcami, którzy zarezerwowali te porty w moim przypadku, były Docker dla Windows i Hyper-V

Rozwiązanie

Odinstalowałem Dockera (ponieważ go nie potrzebowałem) i wyłączyłem Hyper-V. Aby wyłączyć Hyper-V: Idź do: Panel sterowania-> Programy i funkcje-> Włącz lub wyłącz funkcje Windows. Odznacz Hyper-V i uruchom ponownie komputer.

Po restarcie komenda netsh interface ipv4 show excludedportrange protocol=tcpnie pokazała zarezerwowanych portów.

Następnie dodałem port dla mojej aplikacji do wykluczonego zakresu portów, uruchamiając następujące polecenie z wiersza polecenia z podwyższonym poziomem uprawnień:

netsh int ipv4 add excludedportrange protocol=tcp startport=50403 numberofports=1 store=persistent

Następnie ponownie włączyłem Hyper-V (w razie potrzeby Docker można ponownie zainstalować) i ponownie uruchomiłem komputer.

Hyper-V zarezerwował teraz swoje porty bez ingerencji w port używany przez moją aplikację: Reserved Port Ranges

Philip Trenwith
źródło
To zadziałało dla mnie, z wyjątkiem tego, że potrzebuję Dockera, więc po prostu wyłączyłem go podczas uruchamiania zamiast odinstalować.
cderrick
3
Skończyło się na tym, że zmieniłem mój port poza wykluczonym zakresem ... ale TO zaoszczędziło mi mnóstwo czasu. Dziękuję Ci.
Cory
2
Podobnie jak @Cory, zmieniłem swój port na coś poza zakresami, denerwuję, ponieważ teraz muszę zmieniać aplikacje odwołujące się za każdym razem, gdy to robię, ale lepsze niż pełne ponowne uruchomienie.
Nick Rubino
Szukałem tego od lat . Zastanawiam się, czy istnieje sposób, aby dokładnie określić, która aplikacja ukradła moje porty? Dzięki.
Simon Mourier
Wyłączenie Hyper-V i ponowne uruchomienie naprawiło to dla mnie
Kyle Burkett
30

Miałem ten sam problem. Właśnie ponownie uruchomiłem Visual Studio i zadziałało.

MusicAndCode
źródło
1
Mój komputer został ponownie uruchomiony z aktualizacji i netstat nie pokazał żadnego procesu używającego portu. To było jedyne rozwiązanie, które działało. Dzięki!
goodies4uall
1
musiałem ponownie uruchomić moją maszynę
Mahmoud Hboubati
Zaskakująco, ponowne uruchomienie Visual Studio (2017) również zadziałało. Dzięki!
Thomas Gassmann
W moim przypadku mój Windows 10 pojawił się na niebiesko i musiałem dwukrotnie zrestartować komputer . Inne projekty witryn internetowych działały dobrze (inny port lokalny) i żadna z pozostałych odpowiedzi nie działała. Zmiana portu dla projektu też tego nie naprawiła. W samym IIS Express musi istnieć inna konfiguracja.
Granger
Wygląda na to, że zdarza mi się to za każdym razem, gdy uruchamiam projekt w VS 2019 z debugowaniem za pomocą F5, a następnie próbuję go uruchomić bez debugowania za pomocą Ctrl + F5, co jest wtedy, gdy się nie udaje. Ponowne uruchomienie rozwiązuje ten problem, choć chciałbym móc temu zapobiec.
pwhe23
28

Miałem ten sam problem. Jak @Kautsky Lozano wspomina powyżej, inna aplikacja używa tego portu.

Więc [dla systemu operacyjnego Windows] po prostu:

  • Otwórz monitor zasobów (Menedżer zadań -> Wydajność -> Otwórz monitor zasobów)
  • Kliknij kartę Sieć .
  • W obszarze Połączenia TCP znajdź aplikację korzystającą z portu lokalnego używanego przez IIS Express i zamknij ją. (w moim przypadku był to firefox)
Zoti
źródło
Działało idealnie!
Al Belmondo
12

Napotkałem ten sam problem po uaktualnieniu rozwiązania z Visual Studio 2012 do 2015. Przyjechałem tutaj i pobiegłem netstattylko po to, aby stwierdzić, że żadna inna aplikacja nie używa tych samych portów. Okazuje się, że miałem te same witryny z tymi samymi portami zmapowanymi w folderze applicationhost.configat Users/<username>/Documents/IISExpress/configi applicationhost.configw .vsfolderze wewnątrz mojego rozwiązania. Powinienem zauważyć, że problem również nie zaczął się zaraz po aktualizacji. Po prostu pewnego ranka zaczyna zawodzić. Wydaje się, że kilka ponownych uruchomień również nie rozwiązało problemu.

Usunięcie witryn będących w konflikcie z witryny przechowywanej w moich dokumentach i ponowne uruchomienie programu Visual Studio rozwiązało problem.

Steve Haselschwerdt
źródło
Pomogło mi to: applicationhost.configznajduje się w .vs\configfolderze w folderze rozwiązania.
Erik Oppedijk
6

Jeśli netstat nie pokazuje niczego już używającego portu

netstat -ano | findstr <your port number>

Port może być wykluczony, wypróbuj to polecenie, aby sprawdzić, czy zakres jest blokowany 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>

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

John Leonard
źródło
3

Właśnie miałem ten problem, mimo że netstat nie pokazywał żadnych konfliktów.

Naprawiono to dla mnie:

  1. Zamknij program Visual Studio
  2. Otwórz Eksplorator plików
  3. Przejdź do folderu projektu naruszającego
  4. Usuń foldery obj i bin
  5. Usuń plik * .user (prawdopodobnie jest to opcjonalne)
  6. Uruchom ponownie program Visual Studio i spróbuj ponownie
AaronK
źródło
3

Po aktualizacji systemu Windows 10 i / lub Visual Studio 16+ może się zdarzyć z powodu wewnętrznego błędu, że IISExpress nie rejestruje żadnej witryny programistycznej, ponieważ nie akceptuje już localhostpołączeń.

Aby rozwiązać problem, wystarczy ponownie zarejestrować wiązanie. Aby to zrobić, uruchom z powłoki administracyjnej następujące polecenie:

netsh http add iplisten ipaddress=:: 
Yennefer
źródło
2

Miałem ten problem podczas uaktualniania projektu MVC . Skopiowałem nowszy MVC .csproj do mojego istniejącego pliku .csproj, a następnie wróciłem do w pełni działającego projektu. To, czego nie uwzględniłem, to istniejący numer portu w starym .csproj. Nowy projekt miał nowy numer portu, ale miał wspólną nazwę projektu / zespołu. To wystarczyło, aby IIS Express stracił rozum i wyrzucił ten wyjątek.

Wystarczyło wykopać stary numer portu z git i zmienić adres URL IIS Express, aby uwzględnić go w ustawieniach projektu, aby to naprawić.

Chris Moschini
źródło
2

Najłatwiejszym pierwszym krokiem bez wchodzenia do konsoli poleceń jest po prostu zamknięcie wszystkich aplikacji (w tym VS), a następnie samodzielne uruchomienie VS i spróbuj ponownie. Prawdopodobnie inna aplikacja, taka jak Twoja przeglądarka, powoduje konflikt. W moim przypadku Chrome spowodował to i został rozwiązany podczas zamykania wszystkiego i ponownego uruchamiania VS. Ponownie otworzyłem Chrome i wszystko było w porządku.

Powyższe rzeczy dotyczące netstat są przydatne, ale dla mnie to tylko wtedy, gdy nie możesz zrobić tego, co sugeruję.

singleTrackVale
źródło
2

podsumować wszystkie odpowiedzi. Istnieją 2 rozwiązania. Obie pracowały dla mnie. - Rozwiązanie nr 1 Zabij aplikację używającą tego samego portu. - Rozwiązanie nr 2 Skonfiguruj IIS Express, aby używał innego portu dla swojego projektu.

Rozwiązanie nr 1 (zakładając, że port w komunikacie o błędzie to 443) Uruchom w wierszu poleceń:

netstat -ao | findstr 443

zwraca: TCP 0.0.0.0:443 pe01:0 LISTENING 2904 Ostatnia liczba (dzięki @ chris-schiffhauer) to PID do zabicia. Przejdź do Menedżera zadań -> Procesy -> [Pokaż procesy od wszystkich użytkowników], Zabij proces z PID = 2904. W moim przypadku był to host VmWare.

Rozwiązanie nr 2 (Przypuśćmy, że wiadomość brzmiała: Rejestracja adresu URL „ http: // localhost: 433 / ” dla witryny „MyProject.Website0”… nie powiodła się ). Otwórz następujący plik w notedpad ++: C:\Users\MY_USER_NAME\Documents\IISExpress\config\applicationhost.configZnajdź w nim wiersz zawierający:

<site name="MyProject.Website0" id="...
...
            <bindings>
                <binding protocol="http" bindingInformation="*:80:localhost" />
                <binding protocol="https" bindingInformation="*:443:localhost" />
            </bindings>

Zmień 433na coś innego, na przykład 4330lub usuń <binding.../>tag powodujący konflikt .

epoks
źródło
2

W moim przypadku wykonanie następujących czynności załatwiło sprawę:

  • Usuń witrynę z .vs \\ config \ applicationhost.config
  • Usuń witrynę z Documents \ IISExpress \ config \ applicationhost.config
  • Usuń IISUrl z pliku .csproj

Kiedy ponownie uruchomiłem Visual Studio, przydzieliło projektowi zupełnie nowy numer portu i działało idealnie

djeastm
źródło
2

Numery portów nie są zgodne

W moim przypadku problem tkwił w moich tagach powiązań znalezionych w pliku konfiguracyjnym w .vs w folderze mojego rozwiązania, numery portów nie pasowały. Wiązania były następujące

<bindings>
     <binding protocol="http" bindingInformation=":16433:localhost" />
</bindings>

A w moich ustawieniach miałem ustawiony adres URL jako http://localhost:1943/

Więc to, co zrobiłem, to usunąć wewnętrzne powiązanie i uruchomić moją aplikację internetową, a następnie wygenerowałem nowe powiązanie z innym numerem, a następnie skopiowałem nowy wygenerowany port do moich ustawień, a następnie błąd zniknął.

Siphamandla Hero Ngwenya
źródło
Tym razem (miałem ten problem wcześniej, była to jedna z wielu przyczyn przedstawionych w różnych odpowiedziach) to była przyczyna.
speciesUnknown,
1

Udało mi się rozwiązać ten problem, usuwając wszystko od <site>do </site>tagów w

Users/<username>/Documents/IISExpress/config/applicatiohost.config plik

<sites>
  <site>
     .
     .   ===> remove this content including the <site> and </site> tags.
     .
  </site>
</sites>
nPcomp
źródło
1

Właśnie zmarnowałem pół dnia próbując rozwiązać ten sam problem, poczułem, że powinienem dodać rozwiązanie, które w końcu zadziałało.

TL; DR Jeśli netstatwskazuje, że problem nie jest używany, nadal wypróbuj kilka innych w zupełnie innym zakresie

Wcześniej napotkałem ten problem, ale zazwyczaj ponowne uruchomienie Visual Studio, zmiana portów (zwiększenie o 1) lub ponowne uruchomienie załatwia sprawę. Jednak tym razem nic z tego nie pomogło i netstatnie znalazłem konfliktu w procesie. Nawet ponownie zainstalowałem IIS i Visual Studio i usunąłem kilka innych programów, które podejrzewałem, że mogą przeszkadzać. Wydawało się, że usługi IIS próbowały uruchomić wiele wystąpień tej samej witryny.

W końcu spróbowałem biegać netstatbez findstr. Wizualnie przejrzałem listę aktywnych portów i zauważyłem, że chociaż te, które wypróbowałem, nie zostały wymienione, było kilka procesów korzystających z portów z podobnego zakresu. Zamiast tego szukałem zakresu, który był wolny, wybrałem numer portu i wydaje się, że teraz działa.

Chciałbym usłyszeć, czy ktoś może wyjaśnić, dlaczego to mogło zadziałać?

Phil
źródło
To rozwiązanie również rozwiązało problem.
Rastografie
1

Natknąłem się na ten problem dzisiaj w programie Visual Studio 2019 i spędziłem 3 godziny, zanim ostatecznie go zrozumiałem. Program Visual Studio używa 2 plików do śledzenia numeru portu SSL, więc musisz naprawić oba i musisz naprawić oba, gdy program Visual Studio jest zamknięty. Te dwa pliki to plik applicationhost.config znajdujący się w folderze .vs \ ??? \ config rozwiązania; a także folder .csproj.user projektu internetowego. Edytuj oba pliki i usuń niewłaściwe konfiguracje. Może nawet po prostu usuń oba pliki. Następnie ponownie otwórz aplikację w programie Visual Studio. Powodzenia!

Rob Kraft
źródło
Jeśli Twoje rozwiązanie zawiera zwykłą staromodną witrynę internetową (nie aplikację internetową), numery portów również znajdują się w pliku rozwiązania
.sln
1
  1. Zamknij studio wizualne
  2. usuń folder „.vs”
  3. Spróbuj zmienić port „localhost: 8080”

U mnie to zadziałało.

Ömer Güngör
źródło
1

Postępowałem zgodnie z instrukcjami @ Zoti i użyłem Monitora zasobów, aby znaleźć dany port.

Okazuje się, że Outlook został losowo przypisany do portu dla swojego kanału komunikacyjnego. Morał z tej historii jest taki, że może to być absolutnie wszystko.

Greg B.
źródło
1

Przyczyną tego błędu jest podanie nieprawidłowego numeru portu do aplikacji.

just use http ports for your application to run

użyj portu w pobliżu numeru 8080, czyli:

lokalny host: 8090

aby zmienić port dla twojej aplikacji w Visual Studio

goto project properties > web > Server > ProjectUrl

Talha Rafique
źródło
0

Próbowałem już następujących rzeczy:

  • Uruchomiono ponownie program Visual Studio
  • Sprawdź wszystkie dostępne porty, które mogą nasłuchiwać mojego określonego numeru, ale zawsze zwracają zero wyników. Żaden proces nie nasłuchuje na moim porcie.
  • Próbowałem też użyć tego, ale zero wyników.

    netstat -aon | znajdź „: 80”

  • Próbowałem też użyć, ale też zwracałem zero wyników.

    netstat -ao | findstr

Więc co zrobiłem, to usunąłem ten " Microsoft.VsHub.Server.HttpHostx64.exe ", a następnie mój projekt został pomyślnie uruchomiony i uruchomiony w przeglądarce. Błąd został naprawiony. Nie wiem dlaczego, ale to działa.

Oto zrzut ekranu:

wprowadź opis obrazu tutaj

Willy David Jr
źródło
0

Miałem ten sam problem, ale ustąpił po ponownym uruchomieniu przy użyciu uprawnień administratora. (To mógł być właśnie restart)

Vaibhav Garg
źródło
0

Miałem dzisiaj ten sam problem i nic, co znalazłem w internecie, nie działało. Używam portu 2057 od lat, ale nagle przestał działać. Zmiana na inną niską liczbę, np. 2058, dała ten sam komunikat o błędzie, ale kiedy zmieniłem go na 20057, wszystko znów działało. Może coś się zmieniło w sposobie obsługi niższych numerów portów.

Bogi lenvig
źródło
0

IIS Express nie uruchamia rozwiązania w programie Visual Studio

  • Przejdź do Menedżera zadań
  • Wyszukaj proces „Host ramki aplikacji”
  • Zakończ ten proces
  • Spróbuj ponownie biec
Qamar Zaman
źródło