Site kann nicht in IIS gestartet werden (Verwendung durch einen anderen Prozess)

96

Wenn ich versuche, eine Site in IIS zu starten, heißt es:

Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird

Ich habe in Google gesucht und festgestellt, dass möglicherweise eine andere Site Port 80 verwendet hat. In MyIIS wird jedoch festgestellt, dass nur diese Site Port 80 verwendet. Was könnte Port 80 sonst noch verwenden oder liegt ein anderes Problem vor?

hichris123
quelle
Starten Sie Ihr System einmal neu und versuchen Sie es dann.
ان غني
Ich habe es getan, aber wieder das gleiche Problem
1
Versuchen Sie, IIS so zu konfigurieren, dass es auf einem anderen Port ausgeführt wird. Möglicherweise wird auf Ihrem Computer ein anderer Server ausgeführt. Irgendeine Apache-Instanz? Es gibt einige Würmer, die Port 80 auch auf infizierten Computern als Hintertür öffnen.
Nunespascal
Dieser Fehlertext ist sicherlich nicht hilfreich, aber wenn Sie die Protokolle der Ereignisanzeige überprüfen, erhalten Sie einen Hinweis darauf, dass beim Binden an Port 8080 (von der Website in meinem IIS verwendet) ein Fehler aufgetreten ist. Auf meiner Windows 10-Box wurden zwei Fehler von IIS-W3SVC und HttpEventQuelle protokolliert . Zweiter Ereignisprotokolltext - 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 wurde von einem Oracle-Dienst verwendet. Ich habe den von meiner Website verwendeten Port auf 8081 geändert.
RBT

Antworten:

176

Überprüfen Sie mit netstat -aonoder netstat -aon | findstr 0.0:80an einer Eingabeaufforderung, welche Prozess- ID auf Port: 80 HÖRT, und suchen Sie dann im Task-Manager nach dieser Prozess-ID (PID), wobei Ansicht-> Spalten auswählen-> Prozess-ID aktiviert ist . Beenden Sie diesen Vorgang, starten Sie IIS neu und Sie sind fertig. ( Hinweis: Wenn Sie Skype installiert haben, beenden Sie diesen Vorgang zuerst. )

In einem modernen Task-Manager müssen Sie auf der Registerkarte Details nach der PID suchen. Wie von @Nikita G in den Kommentaren erwähnt, können Sie diesen Befehl verwenden, um die Aufgabe an Ihrer Eingabeaufforderung zu finden:

tasklist /FI "PID eq 123"

Hinweis: Ändern Sie 123mit der vom ersten Befehl zurückgegebenen PID.

Manoj Purohit
quelle
11
Vielen Dank auch für den Skype-Kommentar.
Keith
Skype wurde auf Port 80 ausgeführt, und meine Websites sind auch auf Port 80 konfiguriert. Daher habe ich dieses Problem behoben, indem ich Skype abgemeldet und anschließend die Skype-Einstellungen so geändert habe, dass sie auf Port 8080 ausgeführt werden. (Nicht obligatorisch zum Starten von IIS)
Umar Shafeeq
1
Es macht Spaß, wenn Microsoft-Produkte kämpfen ... bis Sie Ihren Computer immer wieder neu starten müssen, wenn Sie feststellen, dass es aus einem unbekannten Grund erneut passiert ist und Sie nicht die Energie haben, herauszufinden, was es verursacht (bis jetzt). Im Ernst, so sehr nervig.
Andyface
10
Hier ist ein etwas einfacherer Weg, dies zu tun. Nur Elemente anzeigen, die Port 80 abhören : netstat -aon | findstr 0.0:80. Wenn Sie dann davon ausgehen, dass PID 123 zurückgegeben wird, führen Sie Folgendes aus, um festzustellen, um welchen Prozess es sich handelt : tasklist /FI "PID eq 123".
Nikita G.
1
Für mich war es der OracleServiceXEDienst, der Port 8080 aufgefressen hatte, an den sich die neue Website in meinem IIIS-Server binden wollte.
RBT
35

Dies geschieht, weil ein anderer Prozess Port 80 verwendet. Möglicherweise handelt es sich um eine Chat-Anwendung auf Ihrem PC wie Skype.

Ändern Sie zunächst den Standard-Website-Port, der 80 war, in einen nicht verwendeten Port (z. B. 8087). Um dies zu erreichen, klicken Sie mit der rechten Maustaste auf die Anwendung und dann auf "Bindung bearbeiten".

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Nach diesem Portwechsel starten Sie erneut. Jetzt können Sie feststellen, welcher Prozess den IIS-Port 80 blockiert. Um dies zu überprüfen, verwenden Sie den Befehl netstat, der die Details des Ports zusammen mit der Prozess-ID anzeigt.

Ravindra Bagale
quelle
6
Skype war mein Problem
nbushnell
Auch hier verwendete Skype Port 80. Deaktivieren Sie es unter Optionen -> Erweitert -> Verbindung -> "Verwenden Sie Port 80 und 442 für zusätzliche ..."
Wagner da Silva
25

Melden Sie sich bei Skype ab und versuchen Sie es erneut. Ich habe das gleiche Problem festgestellt und mich gerade von Skype abgemeldet und dann meinen IIS zurückgesetzt. Es hat bei mir funktioniert.

Ovais Mumtaz
quelle
2
Sie können den von Skype verwendeten Port in den Einstellungen
ändern
10

Sie können diesen Befehl auch ausführen, um herauszufinden, welche Anwendung oder welcher Dienst den Port verwendet, und ihn dann im Task-Manager nachverfolgen (sofern es sich nicht um den Web Deploy Agent-Dienst handelt).

netstat -o -n -a | findstr 0.0: 80

Öffnen Sie dann den Task-Manager, gehen Sie zu Prozesse, aktivieren Sie das Kontrollkästchen "Prozesse für alle Benutzer anzeigen" und klicken Sie dann auf das Menü "Ansicht". Fügen Sie zu den Spalten die Spalte "PID" hinzu.

Ordnen Sie die Prozess-ID aus dem Befehl netstat der PID im Task-Manager zu, und Sie finden den Dienst oder die Anwendung, die den Port verwendet.

Bikey
quelle
2
Wenn Sie das Öffnen des Task-Managers vermeiden möchten, führen Sie direkt danach den folgenden Befehl aus, um festzustellen, um welchen Prozess es sich handelt : tasklist /FI "PID eq <PID from netstat (without brackets)>".
Nikita G.
2

Wie andere bereits gesagt haben, verwendet möglicherweise etwas anderes Port 80 oder 443. Es war VMWare Workstation Server für mich, aber überprüfen Sie andere Antworten auf die Verwendung von netstat.

löslicher Fisch
quelle
+1 für die Erwähnung von Port 443. Ich habe netstatnach Port 80 gesucht und nichts angezeigt. Dann haben Sie Port 443 erwähnt und da war es.
jtate
1

Ich denke, dieser Link bietet eine ziemlich gute Erklärung und Behebung dieses Problems http://support.microsoft.com/KB/890015

Meistens; Dies wird aus einem der beiden Gründe verursacht: 1) Port 80 wird von etwas anderem verwendet, und wie von anderen vorgeschlagen, können Sie netstat -o -n -a | findstr 0.0: 80 verwenden, um festzustellen, ob dies der Fall ist. Wenn ja, beenden Sie den Prozess über den Task-Manager (aktivieren Sie das Kontrollkästchen Prozesse aller Benutzer anzeigen).

2) Wenn Port 80 nicht verwendet wird, ist die zweite Ursache möglicherweise eine ungültige IP-Adresse in der ListenOnlyList, die im Registrierungsschlüssel von HTTP-> Parameters abgelegt ist. Wenn Sie dem Link folgen, um den Schlüssel manuell festzulegen, oder tatsächlich (xp und Server 2003) httpcfg delete iplisten -i ipaddress, um die ungültige IP-Adresse zu löschen. Sie müssen die http neu starten, sobald Sie die IP-Adresse bearbeiten!

stt106
quelle
@ Bummi danke für den Kommentar. Ich habe jetzt ein bisschen mehr Details hinzugefügt.
stt106
0

In meinem Fall war es der " Sync Share Service " (SyncShareSvc), der ausgeführt wurde und Port 80 verwendete. Netstat zeigte jedoch 80 als kostenlos an. Ich könnte die Site auf einem anderen Port ausführen lassen, aber nicht auf 80. Wenn ich einen Hostnamen hinzufügen würde, würde IIS mir erlauben, die Site zu starten, aber ich würde zur Digest-Authentifizierung aufgefordert, wenn ich zu localhost (oder einem beliebigen Hostnamen I) navigiere hinzugefügt). In IIS wurden nur Anonym und Formularauthentifizierung aktiviert ...

Ich stellte außerdem fest, dass ich nach dem Stoppen von IIS http://localhostimmer noch zur Digest-Authentifizierung aufgefordert wurde.

In meinem Fall bestand die Lösung darin, Datei- und Speicherdienste> Dateien und iSCSI-Dienste> " Arbeitsordner " aus den installierten Diensten zu entfernen (Neustart erforderlich).

Nach dem Entfernen des Dienstes "Arbeitsordner" und dem Neustart funktionierte IIS wie erwartet.

Adam Hey
quelle
0

Mein Fall war, dass nach der Installation von RD Web Access die ursprünglichen Standardwebsites nicht gestartet werden konnten. Die RD Web Access-Rolle wurde immer noch entfernt. Die Bindung von Port 443 wurde entfernt, um das Problem zu beheben.

Nick
quelle
0

Die meisten Fälle, in denen dies von Webentwicklern geschieht, sind der Grund für Apache. Wenn Sie also von Apache aus zur Konfigurationsdatei gehen! Öffne es und suche mit Strg + F bis 80 und ändere die IP, die du sehen wirst, auf 8080 und den Satz darunter mit 80 bis 8080 und du musst das in deinem xampp oder dem Programm, das du gerade verwendest, bestätigen

Hoffe ich helfe euch

Arne Schouten
quelle
Die Frage bezieht sich auf IIS, nicht auf Apache.
C. Helling
1
Ja, aber diese beiden Programme stören sich gegenseitig. Vielleicht helfe ich jemandem, der das gleiche Problem hat wie ich
Arne Schouten,
0

Um aussagekräftigere Informationen zu erhalten, besteht eine Möglichkeit darin, bei der Ausgabe auch Eigentumsinformationen abzurufen, netstatdamit Sie den Prozess kennen, der entweder 80 (Standard-http-Bindung) oder 443 (wenn https-Bindung definiert ist) verwendet:

 netstat -ab

In meinem Fall war der Schuldige vmware:

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

netstat kann in find geleitet werden, um nach den Ports 80 oder 443 zu suchen (z. B. find ":443"), aber diese bestimmte aktive Verbindung wird am Anfang der Liste angezeigt , wenn sie leicht zu sehen ist.

Alexei
quelle