"Der IIS Express-Webserver kann nicht gestartet werden." in Visual Studio

102

Ich habe versucht, meinen Webdienst über Visual Studio auszuführen. Ich stand vor einem Problem wie:

---------------------------
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   
---------------------------

Ich habe den Task-Manager gesehen und festgestellt, dass PID 4 vom System verwendet wird und seine Beschreibung lautet. NT Kernel & System. Also habe ich versucht, das zu stoppen http service. Alle Abhängigkeitsdienste wurden gestoppt. Aber ich habe ein Problem beim Stoppen von http-Diensten wie

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

Also habe ich versucht, den Dienst manuell zu stoppen und zu starten. Der End-Prozess ist jedoch deaktiviert. Es ist hilfreich, wenn jemand bei diesem Problem helfen kann

Priya
quelle
1
Das Problem wird nach dem Update von Windows 10 angezeigt: Developercommunity.visualstudio.com/content/problem/580466/…
Xiao

Antworten:

126

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

Fehlercode 0x80070020bedeutet ERROR_SHARING_VIOLATION, dass im Fall von IIS Express (oder IIS) der Port, den es abhören möchte, von einem anderen Prozess verwendet wird.

Verwenden Sie den netstatBefehl, um herauszufinden, welche Anwendung den Port verwendet.

netstat -ao | findstr <port_number_to_search_for>

Der aParameter weist netstat an, alle Verbindungen und Überwachungsports anzuzeigen.

Der oParameter weist netstat an, die der Verbindung zugeordnete Prozess-ID anzuzeigen.

Wenn Sie den obigen Befehl netstat ausführen, wird Folgendes ausgegeben:

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

Die zuletzt angezeigte Nummer (hier 9544) ist die Prozess-ID.

Chris Schiffhauer
quelle
11
Gute Antwort! Sie beschreiben nicht nur die Lösung, sondern geben auch die Bedeutung der Parameter an. Ich wünschte, alle Antworten wären so!
Christian Payne
7
Dies hat mir geholfen und es stellte sich heraus, dass die fehlerhafte PID Chrome.exe war. Ich habe Chrome neu gestartet und das Problem ist behoben.
Astrosteve
1
Gute Antwort. Auf diese Weise stellte ich fest, dass Skype sowohl Port 80 als auch Port 443 abhörte. Ich habe Skype beendet und konnte dann iisexpress wie gewohnt starten. Jetzt werden meine zusätzlichen Bindungen für die Ports 80 und 443 angezeigt
Alastair
3
In einem erhöhten cmd-Fenster ausführen und TASKKILL /PID 2756 /Fdurch 2756Ihre Prozess-ID ersetzen
stackoverfloweth
10
Dies kann auch mit dem -nSwitch erheblich beschleunigt werden - er verwendet eine "numerische" Ausgabe, was bedeutet, dass keine Zeit damit verschwendet wird, DNS abzufragen, um IP-Adressen in Hostnamen aufzulösen.
Tullo_x86
45

Ich hatte ein ähnliches Problem beim Versuch, ein Projekt unter Visual Studio 2019 unter Windows 10 auszuführen. Die Anwendung konnte nicht gestartet werden, da der Port anscheinend von einem anderen Prozess verwendet wurde. Der netstatBefehl zeigte jedoch, dass der Port von keiner Anwendung verwendet wurde.

Nachdem ich 2 Tage gegoogelt hatte, fand ich eine Lösung, die für mich funktionierte. Der Port, den ich verwenden wollte, befand sich im ausgeschlossenen Portbereich, den Sie durch Ausführen des Befehls sehen können:

netsh interface ipv4 show excludedportrange protocol=tcp

Die Schuldigen, die diese Ports in meinem Fall reserviert haben, waren Docker für Windows und Hyper-V

Die Lösung

Ich habe Docker deinstalliert (da ich es nicht brauchte) und Hyper-V deaktiviert. So deaktivieren Sie Hyper-V: Gehen Sie zu: Systemsteuerung-> Programme und Funktionen-> Windows-Funktionen ein- oder ausschalten. Deaktivieren Sie Hyper-V und starten Sie den Computer neu.

Nach dem Neustart netsh interface ipv4 show excludedportrange protocol=tcpzeigte der Befehl keine reservierten Ports an.

Anschließend habe ich den Port für meine Anwendung zum ausgeschlossenen Portbereich hinzugefügt, indem ich den folgenden Befehl über eine erhöhte Befehlszeile ausgeführt habe:

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

Dann habe ich Hyper-V wieder aktiviert (Docker kann bei Bedarf neu installiert werden) und den Computer neu gestartet.

Hyper-V hat jetzt seine Ports reserviert, ohne den von meiner Anwendung verwendeten Port zu beeinträchtigen: Reservierte Portbereiche

Philip Trenwith
quelle
Dies hat bei mir funktioniert, außer dass ich Docker benötige, sodass ich es beim Start deaktiviert habe, anstatt es zu deinstallieren.
Cderrick
2
Am Ende habe ich meinen Port außerhalb des ausgeschlossenen Bereichs gewechselt. Aber das hat mir jede Menge Zeit gespart. Danke dir.
Cory
2
Wie bei @Cory habe ich meinen Port in vs geändert, um etwas außerhalb der Bereiche zu sein. Ärgerlich, weil ich jetzt jedes Mal, wenn ich dies tue, die Referenzierungs-Apps ändern muss, aber besser als ein vollständiger Neustart.
Nick Rubino
Ich habe jahrelang danach gesucht . Ich frage mich, ob es eine Möglichkeit gibt, genau festzustellen, welche App meine Ports gestohlen hat . Vielen Dank.
Simon Mourier
30

Ich hatte das gleiche Problem. Ich habe gerade Visual Studio neu gestartet und es hat funktioniert.

MusicAndCode
quelle
1
Mein Computer wurde nach Updates neu gestartet und netstat zeigte keinen Prozess über den Port an. Dies war nur eine Lösung, die funktionierte. Vielen Dank!
goodies4uall
1
musste auch meine Maschine neu starten
Mahmoud Hboubati
Überraschenderweise hat der Neustart von Visual Studio (2017) auch für mich funktioniert. Vielen Dank!
Thomas Gassmann
In meinem Fall wurde meine Windows 10-Box blau angezeigt und ich musste zweimal neu starten . Andere Website-Projekte haben gut funktioniert (anderer lokaler Port), und keine der anderen Antworten hier hat funktioniert. Das Ändern des Ports für das Projekt hat es auch nicht behoben. In IIS Express selbst muss eine andere Konfiguration vorhanden sein.
Granger
Dies scheint mir immer dann zu passieren, wenn ich ein Projekt in VS 2019 mit Debugging mit F5 ausführe und später versuche, es ohne Debugging mit Strg + F5 auszuführen, wenn es fehlschlägt. Ein Neustart behebt das Problem, obwohl ich mir wünschte, ich könnte es tatsächlich verhindern.
pwhe23
27

Ich hatte das gleiche Problem. Wie oben von @Kautsky Lozano erwähnt, verwendet eine andere Anwendung diesen Port.

Also [für ein Windows-Betriebssystem] nur:

  • Ressourcenmonitor öffnen (Task-Manager -> Leistung -> Ressourcenmonitor öffnen)
  • Klicken Sie auf die Registerkarte Netzwerk .
  • Und bei TCP - Verbindungen finden die Anwendung , die den lokalen Port , dass IIS Express Anwendungen und schließen es verwendet. (Es war Firefox in meinem Fall)
Zoti
quelle
Hat perfekt funktioniert!
Al Belmondo
12

Nachdem wir eine Lösung von Visual Studio 2012 auf 2015 aktualisiert hatten, stieß ich auf dasselbe Problem. Ich war hierher gekommen und hatte netstatnur festgestellt, dass keine andere Anwendung dieselben Ports verwendete. Es stellt sich heraus , dass ich die gleichen Seiten mit den gleichen Ports in den abgebildeten hatte applicationhost.configan Users/<username>/Documents/IISExpress/configund die applicationhost.configim .vsOrdner in meiner Lösung. Ich sollte beachten, dass das Problem auch nicht direkt nach dem Upgrade begann. Eines Morgens scheitert es immer wieder. Ein paar Neustarts schienen das Problem auch nicht zu lösen.

Das Problem wurde behoben, indem die in Konflikt stehenden Sites von den in meinen Dokumenten gespeicherten Sites entfernt und Visual Studio neu gestartet wurden.

Steve Haselschwerdt
quelle
Das hat mir geholfen: Das applicationhost.configbefindet sich im .vs\configOrdner unter Ihrem Lösungsordner.
Erik Oppedijk
6

Wenn netstat nichts anzeigt, das den Port bereits verwendet

netstat -ano | findstr <your port number>

Der Port ist möglicherweise ausgeschlossen. Versuchen Sie diesen Befehl, um festzustellen, ob der Bereich durch etwas anderes blockiert ist:

netsh interface ipv4 show excludedportrange protocol=tcp

Sie können versuchen, den Bereich für eine Reihe von Ports vom Startport freizugeben (erforderliche Eingabeaufforderung mit Administrator erforderlich):

netsh int ip delete excludedportrange protocol=tcp numberofports=<number of ports> startport=<start port>

Für mich konnte ich diese nicht entsperren. Ich habe nur "Zugriff verweigert" erhalten, sodass ich schließlich einen anderen Port für meine Site auswählen musste.

John Leonard
quelle
3

Ich hatte gerade dieses Problem, obwohl netstat keine Konflikte zeigte.

Folgendes hat es für mich behoben:

  1. Schließen Sie Visual Studio
  2. Öffnen Sie den Datei-Explorer
  3. Navigieren Sie zum Ordner des betreffenden Projekts
  4. Löschen Sie die Ordner obj und bin
  5. Löschen Sie den * .user Datei (dies ist wahrscheinlich optional)
  6. Starten Sie Visual Studio neu und versuchen Sie es erneut
AaronK
quelle
2

Ich hatte dieses Problem beim Upgrade eines MVC-Projekts . Ich habe die neuere MVC-Datei .csproj über meine vorhandene .csproj-Datei kopiert und dann zu einem voll funktionsfähigen Projekt zurückgearbeitet. Was ich nicht berücksichtigt habe, ist die vorhandene Portnummer in der alten .csproj. Das neue Projekt hatte eine neue Portnummer, teilte jedoch den Projekt- / Baugruppennamen. Das war genug, um IIS Express aus den Augen zu verlieren und diese Ausnahme auszulösen.

Es reichte aus, nur die alte Portnummer aus Git herauszuholen und die IIS Express-URL so zu ändern, dass sie in die Projekteinstellungen aufgenommen wird, um das Problem zu beheben.

Chris Moschini
quelle
2

Der einfachste erste Schritt, ohne in die Befehlskonsole zu gelangen, besteht darin, einfach alle Anwendungen (einschließlich VS) herunterzufahren, VS dann selbst zu starten und es erneut zu versuchen. Es gibt wahrscheinlich eine andere Anwendung wie Ihren Browser, die den Konflikt verursacht. In meinem Fall hat Chrome dies verursacht und wurde behoben, als alles heruntergefahren und VS neu gestartet wurde. Ich habe Chrome wieder geöffnet und alles war in Ordnung.

Das obige Netstat-Zeug ist nützlich, aber für mich ist das nur, wenn Sie nicht tun können, was ich vorschlage.

singleTrackVale
quelle
2

um alle Antworten zusammenzufassen. Es gibt 2 Lösungen. Beide haben für mich gearbeitet. - Lösung 1 Beenden Sie die App, die denselben Port verwendet. - Lösung 2 Konfigurieren Sie IIS Express so, dass ein anderer Port für Ihr Projekt verwendet wird.

Lösung Nr. 1 (Angenommen, der Port in der Fehlermeldung war 443) Führen Sie in der Befehlszeile Folgendes aus:

netstat -ao | findstr 443

es gibt zurück: TCP 0.0.0.0:443 pe01:0 LISTENING 2904 Die letzte Zahl (dank @ chris-schiffhauer) ist PID to kill. Gehen Sie zum Task-Manager -> Prozesse -> [Prozesse von allen Benutzern anzeigen] und beenden Sie einen Prozess mit PID = 2904. In meinem Fall war es VmWare-Host.

Lösung 2 (Angenommen, die Meldung lautete: Fehler beim Registrieren der URL " http: // localhost: 433 / " für die Site "MyProject.Website0" ... ). Öffnen Sie die folgende Datei in notatedpad ++: C:\Users\MY_USER_NAME\Documents\IISExpress\config\applicationhost.configSuchen Sie darin eine Zeile mit:

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

Wechseln Sie entweder 433zu etwas anderem, 4330oder löschen Sie das widersprüchliche <binding.../>Tag.

Epox
quelle
2

In meinem Fall hat das Folgende den Trick getan:

  • Löschen Sie die Site aus .vs \\ config \ applicationhost.config
  • Löschen Sie die Site aus Documents \ IISExpress \ config \ applicationhost.config
  • Löschen Sie die IISUrl aus der .csproj

Beim Neustart von Visual Studio wurde dem Projekt eine völlig neue Portnummer zugewiesen und es lief einwandfrei

djeastm
quelle
2

Portnummern stimmen nicht überein

In meinem Fall lag das Problem in meinen Bindungs-Tags, die in der Konfigurationsdatei in .vs unter meinem Lösungsordner gefunden wurden. Die Portnummern stimmten nicht überein. Die Bindungen waren wie folgt

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

Und in meinen Einstellungen hatte ich URL eingestellt als http://localhost:1943/

Also habe ich die innere Bindung gelöscht und meine Web-App ausgeführt. Dann wurde eine neue Bindung mit einer anderen Nummer generiert. Dann habe ich den neu generierten Port in meine Einstellungen kopiert. Dann ist der Fehler verschwunden.

Siphamandla Held Ngwenya
quelle
Dieses Mal (ich hatte dieses Problem schon einmal, es war eine der vielen Ursachen, die in verschiedenen Antworten hier dargestellt wurden) war dies die Ursache.
Gburton
2

Nach dem Update von Windows 10 und / oder Visual Studio 16+ kann es aufgrund eines internen Fehlers vorkommen, dass IISExpress keine Entwicklungswebsite registriert, da keine localhostVerbindungen mehr akzeptiert werden .

Um das Problem zu beheben, müssen Sie nur die Bindung erneut registrieren. Führen Sie dazu in einer Verwaltungsshell den folgenden Befehl aus:

netsh http add iplisten ipaddress=:: 
Yennefer
quelle
Das hat bei mir funktioniert, vielen Dank!
Jakub Szumiato
1

Ich konnte fix dieses Problem , indem sie alles aus dem Entfernen <site>zu </site>Tags in

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

<sites>
  <site>
     .
     .   ===> remove this content including the <site> and </site> tags.
     .
  </site>
</sites>
nPcomp
quelle
1

Nachdem ich gerade einen halben Tag damit verbracht hatte, dasselbe Problem zu beheben, hatte ich das Gefühl, ich sollte die Lösung hinzufügen, die schließlich für mich funktionierte.

TL; DR Wenn netstatangezeigt wird, dass das Problem nicht verwendet wird, versuchen Sie es dennoch mit einigen anderen in einem völlig anderen Bereich

Ich bin bereits auf dieses Problem gestoßen, finde aber normalerweise einen Neustart von Visual Studio, das Ändern von Ports (Inkrementieren um 1) oder einen Neustart. Bei dieser Gelegenheit half jedoch nichts davon, undnetstat wurde kein widersprüchlicher Prozess gefunden. Ich habe sogar IIS und Visual Studio neu installiert und einige andere Programme entfernt, von denen ich vermutete, dass sie stören könnten. Es schien, als würde IIS versuchen, mehrere Instanzen derselben Site zu starten.

Schließlich versuchte ich netstatohne zu laufenfindstr . Ich habe die Liste der aktiven Ports visuell gescannt und festgestellt, dass die von mir getesteten Ports zwar nicht aufgelistet waren, es jedoch einige Prozesse gab, bei denen Ports in einem ähnlichen Bereich verwendet wurden. Also suchte ich stattdessen nach einem Bereich, der frei war, wählte eine Portnummer und das scheint jetzt zu funktionieren.

Ich würde gerne hören, ob jemand erklären kann, warum dies funktioniert haben könnte.

Phil
quelle
Diese Lösung hat es auch für mich behoben.
Rastographics
1

Ich bin heute in Visual Studio 2019 auf dieses Problem gestoßen und habe 3 Stunden damit verbracht, das Problem endlich herauszufinden. Visual Studio verwendet zwei Dateien, um die SSL-Portnummer zu verfolgen. Sie müssen also beide und beide reparieren, während Visual Studio geschlossen ist. Die beiden Dateien sind die Datei applicationhost.config, die sich im Ordner .vs \ ??? \ config Ihrer Lösung befindet. und auch den Ordner .csproj.user Ihres Webprojekts. Bearbeiten Sie beide Dateien und entfernen Sie die fehlerhaften Konfigurationen. Vielleicht löschen Sie einfach beide Dateien. Öffnen Sie dann Ihre App erneut in Visual Studio. Viel Glück!

Rob Kraft
quelle
Wenn Ihre Lösung eine einfache altmodische Website enthält (keine Webanwendung), befinden sich die Portnummern auch in der Lösungsdatei .sln
nuander
1
  1. Visuelles Studio schließen
  2. Ordner ".vs" löschen
  3. Versuchen Sie, den Port "localhost: 8080" zu ändern.

Es hat bei mir funktioniert.

Ömer Güngör
quelle
1

Ich folgte den Anweisungen von @ Zoti und benutzte Resource Monitor, um den fraglichen Port zu finden.

Es stellte sich heraus, dass Outlook zufällig der Port für seinen Kommunikationskanal zugewiesen wurde. Die Moral der Geschichte ist, es könnte absolut alles sein.

Greg B.
quelle
0

Folgendes habe ich bereits versucht:

  • Visual Studio neu gestartet
  • Überprüfen Sie alle verfügbaren Ports, die möglicherweise meine spezifische Nummer abhören, aber immer keine Ergebnisse zurückgeben. In meinem Port lauschen keine Prozesse.
  • Ich habe auch versucht, dies zu verwenden, aber keine Ergebnisse.

    netstat -aon | find ": 80"

  • Ich habe auch versucht, Ergebnisse zu verwenden, aber auch keine zurückzugeben.

    netstat -ao | findstr

Also habe ich diese " Microsoft.VsHub.Server.HttpHostx64.exe " gelöscht " dann wurde mein Projekt erfolgreich gestartet und im Browser gestartet. Der Fehler wurde behoben. Ich bin nicht sicher warum, aber es funktioniert.

Hier ist der Screenshot:

Geben Sie hier die Bildbeschreibung ein

Willy David Jr.
quelle
0

Ich hatte das gleiche Problem, aber es wurde behoben, als ich mit Administratorrechten neu startete. (Könnte nur der Neustart gewesen sein)

Vaibhav Garg
quelle
0

Ich hatte heute das gleiche Problem und nichts, was ich im Internet gefunden habe, hat funktioniert. Ich benutze Port 2057 seit Jahren, aber plötzlich funktionierte es nicht mehr. Das Ändern auf eine andere niedrige Zahl wie 2058 gab dieselbe Fehlermeldung aus, aber als ich es auf 20057 änderte, funktionierte alles wieder. Vielleicht hat sich etwas an der Art und Weise geändert, wie mit den niedrigeren Portnummern umgegangen wird.

Bogi lenvig
quelle
0

Grund für diesen Fehler ist, dass Sie Ihrer Anwendung die falsche Portnummer geben.

just use http ports for your application to run

Verwenden Sie den Port in der Nähe der Nummer 8080, dh:

localhost: 8090

um den Port für Ihre Anwendung in Visual-Studio zu ändern

goto project properties > web > Server > ProjectUrl

Talha Rafique
quelle