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?
IIS-W3SVC
iHttpEvent
ź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.Odpowiedzi:
Sprawdź za pomocą
netstat -aon
lubnetstat -aon | findstr 0.0:80
w 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ń:
Uwaga: zmień
123
za pomocą PID zwróconego z pierwszego polecenia.źródło
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"
.OracleServiceXE
usługa, która zajęła port 8080, z którym próbowała się połączyć nowa witryna na moim serwerze IIIS.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”.
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.
źródło
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.
źródło
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.
źródło
tasklist /FI "PID eq <PID from netstat (without brackets)>"
.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.
źródło
netstat
do sprawdzenia portu 80 i nic się nie pokazało. Następnie wspomniałeś o porcie 443 i tak było.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 ipaddress
aby usunąć nieprawidłowy adres IP. Musisz zrestartować http po edycji ipaddress!źródło
W moim przypadku była to usługa „ Sync 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.
źródło
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.
źródło
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ę
źródło
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):W moim przypadku winowajcą był vmware:
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.źródło