Nie można uruchomić witryny w usługach IIS (użyj przez inny proces)

96

Kiedy próbuję uruchomić witrynę w IIS, pojawia się komunikat:

proces nie może uzyskać dostępu do pliku, ponieważ był używany przez inny proces

Szukałem w Google i stwierdziłem, że inna witryna mogła korzystać z portu 80, ale w MyIIS widzę, że tylko ta witryna korzysta z portu 80. Co jeszcze może korzystać z portu 80, czy też występuje inny problem?

hichris123
źródło
uruchom ponownie system, a następnie spróbuj.
عثمان غني
Zrobiłem to, ale znowu pojawił się ten sam problem
1
Spróbuj skonfigurować usługi IIS do działania na innym porcie. Być może na komputerze działa inny serwer. Jakaś instancja Apache? Istnieje kilka robaków, które również na zainfekowanych komputerach otwierają port 80 jako backdoor.
nunespascal
Ten tekst błędu z pewnością nie jest pomocny, ale jeśli sprawdzisz dzienniki przeglądarki zdarzeń, to daje ci wskazówkę, że wystąpił błąd podczas łączenia z portem 8080 (używanym przez witrynę internetową w moich usługach IIS). Na moim pudełku z systemem Windows 10 zarejestrował dwa błędy z IIS-W3SVC i HttpEventźródła. Tekst drugiego dziennika zdarzeń - Unable to bind to the underlying transport for [::]:8080. The IP Listen-Only list may contain a reference to an interface which may not exist on this machine. The data field contains the error number.. Port 8080 był używany przez usługę Oracle. Zmieniłem port używany przez moją stronę internetową na 8081.
RBT

Odpowiedzi:

176

Sprawdź za pomocą netstat -aonlub netstat -aon | findstr 0.0:80w wierszu polecenia, aby zobaczyć, który identyfikator procesu SŁUCHA na porcie: 80, a następnie obserwuj ten identyfikator procesu (PID) w Menedżerze zadań za pomocą widoku-> wybierz kolumny-> zaznaczony identyfikator procesu . Zakończ ten proces, uruchom ponownie IIS i gotowe. ( Uwaga: jeśli masz zainstalowany Skype , spróbuj najpierw wyjść z tego procesu ).

W nowoczesnym Menedżerze zadań musisz przejść do zakładki Szczegóły , aby wyszukać PID. Lub, jak wspomniał @Nikita G w komentarzach, możesz użyć tego polecenia, aby znaleźć zadanie z wiersza poleceń:

tasklist /FI "PID eq 123"

Uwaga: zmień 123za pomocą PID zwróconego z pierwszego polecenia.

Manoj Purohit
źródło
11
Dziękuję również za komentarz Skype.
Keith,
Skype działał na porcie 80, a moje strony internetowe są również skonfigurowane na porcie 80, więc naprawiłem ten problem, wylogowując się ze Skype'a, a następnie zmieniłem ustawienia skype, aby działał na porcie 8080. (Nie jest obowiązkowe, aby uruchomić IIS)
Umar Shafeeq
1
Fajnie jest, gdy produkty Microsoft walczą ... dopóki nie będziesz musiał ponownie uruchamiać komputera, gdy zdasz sobie sprawę, że to się powtórzyło z nieznanego powodu i nie masz energii, aby dowiedzieć się, co to powoduje (do teraz). Poważnie, bardzo irytujące.
andyface
10
Oto nieco łatwiejszy sposób na zrobienie tego. Pokaż tylko przedmioty, które nasłuchuje na porcie 80: netstat -aon | findstr 0.0:80. A następnie zakładając, że powraca PID 123, uruchom następujące czynności, aby sprawdzić, która jest procesem, który: tasklist /FI "PID eq 123".
Nikita G.
1
Dla mnie była to OracleServiceXEusługa, która zajęła port 8080, z którym próbowała się połączyć nowa witryna na moim serwerze IIIS.
RBT
35

Dzieje się tak, ponieważ inny proces używa portu 80, może to być aplikacja do czatu na twoim komputerze, taka jak Skype.

Najpierw zmień domyślny port strony internetowej, który był 80 na jakiś nieużywany port (np. 8087). Aby to osiągnąć, kliknij aplikację prawym przyciskiem myszy, a następnie kliknij „Edytuj powiązanie”.

wprowadź opis obrazu tutaj

wprowadź opis obrazu tutaj

Po zmianie portu uruchom ponownie. Teraz możesz określić, który proces blokuje port 80 usług IIS. Aby to sprawdzić, użyj polecenia netstat, które wyświetla szczegóły portu wraz z identyfikatorem procesu.

Ravindra Bagale
źródło
6
moim problemem był skype
nbushnell
to samo tutaj, skype używał portu 80. Wyłącz go w Opcje -> Zaawansowane -> Połączenie -> „Użyj portów 80 i 442 dla dodatkowego ...”
Wagner da Silva
25

Wyloguj się ze Skype i spróbuj ponownie. Wystąpił ten sam problem i właśnie wylogowałem się ze Skype, a następnie zresetowałem moje IIS. U mnie to zadziałało.

Ovais Mumtaz
źródło
2
Możesz zmienić port używany przez Skype w ustawieniach
3ventic
10

Możesz również uruchomić to polecenie, aby dowiedzieć się, która aplikacja lub usługa korzysta z portu, a następnie prześledzić je w Menedżerze zadań (pod warunkiem, że nie jest to usługa Web Deploy Agent).

netstat -o -n -a | findstr 0,0: 80

Następnie otwórz Menedżera zadań, przejdź do Procesy, kliknij pole wyboru „Pokaż procesy dla wszystkich użytkowników”, a następnie kliknij menu Widok i Przejdź do kolumn, dodaj kolumnę PID.

Dopasuj identyfikator procesu z polecenia netstat do PID w menedżerze zadań, a znajdziesz usługę lub aplikację, która korzysta z tego portu.

Bikey
źródło
2
W przypadku, gdy chcesz uniknąć otwierania menedżera zadań, uruchom następujące polecenia po prawo, aby zobaczyć, które proces, który jest: tasklist /FI "PID eq <PID from netstat (without brackets)>".
Nikita G.
2

Jak powiedzieli inni, coś innego może używać portu 80 lub 443. Dla mnie był to VMWare Workstation Server, ale sprawdź inne odpowiedzi, jak używać netstat.

rozpuszczalne ryby
źródło
+1 za wzmiankę o porcie 443. Użyłem netstatdo sprawdzenia portu 80 i nic się nie pokazało. Następnie wspomniałeś o porcie 443 i tak było.
jtate
1

Myślę, że ten link daje całkiem dobre wyjaśnienie i rozwiązanie tego problemu http://support.microsoft.com/KB/890015

Większość czasu; jest to spowodowane jednym z dwóch powodów: 1) port 80 jest używany przez coś innego i jak sugerują inni, możesz użyć netstat -o -n -a | findstr 0.0: 80, aby sprawdzić, czy tak jest. Jeśli tak, zakończ proces w menedżerze zadań (zaznacz, pokaż procesy wszystkich użytkowników)

2) jeśli port 80 nie jest używany, drugą przyczyną jest potencjalnie nieprawidłowy adres IP w ListenOnlyList umieszczonym w kluczu rejestru HTTP-> Parameters. Jeśli skorzystasz z linku, aby ustawić klucz ręcznie lub w rzeczywistości możesz użyć (XP i Server 2003), httpcfg delete iplisten -i ipaddressaby usunąć nieprawidłowy adres IP. Musisz zrestartować http po edycji ipaddress!

stt106
źródło
@bummi dzięki za komentarz. Dodałem teraz trochę więcej szczegółów.
stt106
0

W moim przypadku była to usługaSync Share Service ” (SyncShareSvc), która działała i korzystała z portu 80. Jednak netstat pokazał 80 jako wolny. Mogę uruchomić witrynę na innym porcie, ale nie 80. Gdybym dodał nazwę hosta, IIS pozwoliłoby mi uruchomić witrynę, ale byłbym monitowany o uwierzytelnienie Digest podczas przeglądania do lokalnego hosta (lub dowolnej nazwy hosta I dodany). W usługach IIS włączono tylko uwierzytelnianie anonimowe i za pomocą formularzy ...

Odkryłem też, że po zatrzymaniu usług IIS http://localhost nadal monitował mnie o uwierzytelnienie Digest.

Rozwiązaniem - w moim przypadku - było usunięcie usług plików i pamięci masowej> plików i usług iSCSI> „ foldery robocze z zainstalowanych usług (wymagane ponowne uruchomienie).

Po usunięciu usługi „Foldery robocze” i ponownym uruchomieniu usługi IIS działały zgodnie z oczekiwaniami.

Adam Hej
źródło
0

Mój przypadek był taki, że po zainstalowaniu programu RD Web Access nie można było uruchomić oryginalnych domyślnych witryn internetowych. Usunięto rolę Dostęp w sieci Web do usług pulpitu zdalnego nadal taką samą. Usunięte wiązanie portu 443 rozwiązało problem.

Nacięcie
źródło
0

W większości przypadków, gdy dzieje się tak przez programistów internetowych, przyczyną jest apache, więc jeśli przejdziesz do pliku konfiguracyjnego z Apache! otwórz go i wyszukaj za pomocą ctrl + f na 80 i zmień IP, które zobaczysz, na 8080 i zdanie poniżej na 80 do 8080 i musisz skonfigurować to w swoim xampp lub programie, którego obecnie używasz

Mam nadzieję, że wam pomogę

Arne Schouten
źródło
Pytanie dotyczy IIS, a nie Apache.
C. Helling
1
Tak, ale te 2 programy kolidują ze sobą, więc może pomogę komuś, kto ma ten sam problem co ja
Arne Schouten
0

Aby uzyskać bardziej znaczące informacje, jednym ze sposobów jest również uzyskanie informacji o własności podczas wydawania netstat, aby znać proces, który używa 80 (domyślne powiązanie http) lub 443 (jeśli zdefiniowano powiązanie https):

 netstat -ab

W moim przypadku winowajcą był vmware:

TCP 0.0.0.0:443 Nazwa_komputera: 0
LISTENING [vmware-hostd.exe]

netstat może być przesłany potokiem do find w celu wyszukania portów 80 lub 443 (np. find ":443"), ale te konkretne aktywne połączenia pojawią się na początku listy i będą łatwo widoczne.

Alexei
źródło