Warum und wie beheben? IIS Express "Der angegebene Port wird verwendet"

80

Wir wissen, dass einer Webanwendung in Visual Studio eine zufällige Portnummer zugewiesen ist. Es funktioniert gut in meinem Office-Desktop. Aber wenn ich den Code auf meinen Laptop (von VisualStudio.com) ziehe und die Web-App starte. Ich bekam eine Nachricht und sagte:

Der angegebene Port wird verwendet

Port 10360 wird bereits von einer anderen Anwendung verwendet.

Empfehlungen

  1. Versuchen Sie, auf einen anderen Port als 10360 und höher als 1024 umzuschalten.
  2. Beenden Sie die Anwendung, die Port 10360 verwendet.

Ich kann Recommendation #1das Problem beheben, indem ich den Port in etwas anderes wie 13333 ändere. Aber ich bin sehr gespannt, was mit Port 10360 passiert ist. Wie kann ich überprüfen, welche Anwendung Port 10360 verwendet? Wie kann ich diese Anwendung stoppen?

Blaise
quelle
Ich hatte das gleiche Problem. Mein Problem war, dass ich mehrere Webprojekte in derselben Lösung hatte. Obwohl sie nicht rannten. Eines der anderen Projekte verwendete denselben Port. Stellen Sie einfach sicher, dass jedes Projekt seinen eigenen Port verwendet.
Bedrohung

Antworten:

52

Ich löse das Problem auf diese Weise ...

Datei -> Öffnen -> Website ... Geben Sie hier die Bildbeschreibung ein

Wählen Sie danach Lokale IIS unter IIS Express Site und entfernen Sie das unerwünschte Projekt.

Ich hoffe das hilft.

ja
quelle
4
Ich musste danach neu starten.
Angrydust
4
Wo ist Local IIS unter IIS Express Site
Prakash Joshi
2
Dieser Schritt hat mein Problem nicht behoben. Nachdem ich die Schritte befolgt hatte, startete ich Visual Studio ebenfalls neu, aber ohne Gewinn.
user1451111
Nachdem ich dies getan habe, erhalte ich den Fehler "Verbindung zum Webserver iisexpress kann nicht hergestellt werden", wenn versucht wird, die Lösung auszuführen.
Enrico
38
  1. Ändern Sie es in Lösung (Rechtsklick) -> Eigenschaft -> Web- Registerkarte
  2. Klicken Sie auf Virtuelles Verzeichnis erstellen (vor dem Textfeld Projekt-URL).

IIS Express-Portänderung zum Korrigieren des verwendeten Ports

Iman
quelle
1
Ich möchte meine .sln-Eigenschaftsseite nicht immer wieder ändern. In meinem Fall wird der auf der Eigenschaftsseite definierte Port (wie oben gezeigt) gesperrt, wenn ich in Visual Studio etwas tue, das zum Absturz von Visual Studio führt.
bkwdesign
@bkwdesign, ich habe keine Ahnung von dem Absturz, vielleicht sollten Sie mit Admin Privilege laufen und auch ein virtuelles Verzeichnis erstellen oder Ihren VS auf die neueste Version aktualisieren oder endlich einfach zur Standard-IIS-Rolle wechseln
Iman
29

Ich hatte das gleiche Problem, aber weder in netstat noch in resmon wurde ein Prozess angezeigt.

Was das Problem für mich löste, war das Schließen aller geöffneten Browserfenster.

Clangon
quelle
1
Beeindruckend. Das hat auch bei mir funktioniert. Kann jemand erklären warum?
SJC
Das Bestätigen, dass dies manchmal das Problem behebt (mit Firefox als Standardbrowser) und absolut keinen Sinn ergibt.
Florian Winter
4
Das hat bei mir nicht funktioniert. Keine laufenden Apps. Nur ein Port in Gebrauch. Keine laufenden Webseiten. Nur ein Fehler. Was für ein Schmerz.
Mike
2
Ich denke, der Grund, warum dies funktioniert, ist, wenn Sie eine Webanforderung stellen, dass der Browser eine beliebige Nummer für den Quellport verwendet (normalerweise zwischen 49152 - 65535) und dies im Widerspruch zu dem in IIS konfigurierten Port steht
Hugh Jeffner
Das hat auch bei mir funktioniert. Es machte keinen Sinn, da die App, die den Port blockierte, keinen Grund hatte, ihn zu verwenden.
James Westgate
28

Das hat mich über ein Jahr lang verfolgt!

Für mich,

  • In IIS Express wurde keine Website ausgeführt
  • Nichts benutzte den Port, wie durch Ausführen bestimmt: netstat -anoin der Befehlszeile.

Die Lösung war zu laufen

netsh http add iplisten ipaddress=::

von der Kommandozeile.

Glückliche Tage und Dank an: James Bryant! https://developercommunity.visualstudio.com/content/problem/110767/specified-port-is-in-use.html

Liam Fleming
quelle
Keine Ahnung, was passiert ist, keine Ahnung, was dieser Befehl tut, aber es hat funktioniert, wo andere Lösungen hier fehlgeschlagen sind
sksallaj
4
Dieser Befehl hat meinen IIS beschädigt. Musste netsh http delete iplisten ipaddress = :: ausführen, damit meine lokalen IIS-Sites wieder funktionieren.
Steve
21

Ich hatte ein ähnliches Problem beim Ausführen von Visual Studio 2019 unter Windows 10. Einige Lösungen, die für andere funktionierten, schienen Folgendes zu umfassen:

  1. Ändern der Anwendungsportnummer.
  2. Lassen Sie Visual Studio bei jedem Start der Anwendung automatisch eine Portnummer zuweisen.
  3. Starten Sie Visual Studio neu
  4. Starte den Computer neu.

Leider funktionierte keine dieser Lösungen für mich. Die Zuweisung einer anderen Portnummer funktionierte, war jedoch keine akzeptable Lösung, da es wichtig war, dass meine Anwendung auf einem bestimmten Port ausgeführt wurde.

Die Lösung

Zuerst habe ich den Befehl ausgeführt:

netsh http add iplisten ipaddress=::

von einem erhöhten Befehlszeilenprozess. Dies löste den anfänglichen Fehler. Beim Versuch, die Anwendung auszuführen, wurde nicht mehr der Fehler "Port in Verwendung" angezeigt. Stattdessen wurde jetzt ein Fehler angezeigt, der besagte, dass die Anwendung nicht an den Port binden konnte, da Administratorrechte erforderlich waren. (obwohl ich Visual Studio als Administrator ausgeführt habe)

Der zweite Fehler wurde durch Hyper-V verursacht, das dem Port-Ausschlussbereich Ports hinzufügt. Der von meiner Anwendung verwendete Port befand sich in einem dieser Ausschlussbereiche. Sie können diese Ports anzeigen, indem Sie den folgenden Befehl ausführen:netsh interface ipv4 show excludedportrange protocol=tcp

So lösen Sie diesen zweiten Fehler:

  1. Deaktivieren Sie Hyper-V: Systemsteuerung-> Programme und Funktionen-> Windows-Funktionen ein- oder ausschalten. Deaktivieren Sie Hyper-V
  2. Starte den Computer neu.
  3. Fügen Sie den verwendeten Port zum Port-Ausschlussbereich hinzu: netsh int ipv4 add excludedportrange protocol=tcp startport=50403 numberofports=1 store=persistent
  4. Aktivierbares Hyper-V
  5. Starte den Computer neu

Von hier aus hat alles perfekt funktioniert.

Philip Trenwith
quelle
Wow, das einzige, was mich zur Lösung gebracht hat. Durch das Deaktivieren von Hyper-V bekam ich dank des Unternehmens-Builds ein stirnrunzelndes Windows 10-BSOD, aber dank konnte netsh interface ipv4 show excludedportrange protocol=tcpich zumindest einen neuen Port für das Projekt auswählen.
SharpC
1
DUDE Dies war nicht nur die richtige Antwort, Sie haben sie auch erklärt, anstatt nur ein CMD-Skript zu sichern (was übrigens in den meisten Fällen in Ordnung ist). Vielen Dank, würde 100x upvoten, wenn ich könnte.
Ryanman
1
Vielen Dank, das ist mir nach der Installation von Docker passiert.
MaxPower
1
Das hat mich gerettet, ich habe alle meine Tage verbracht und war sehr frustriert. Dies führt mich zur richtigen Lösung. github.com/docker/for-win/issues/3171#issuecomment-459205576
muhammad kashif
Hatte dieses Problem aufgrund von Hyper-V. Danke dafür!
DylanSp
17

Du suchst netstat.

Öffnen Sie eine administrative Befehlsshell und führen Sie sie aus

netstat -aob

Suchen Sie nach Port 10360. Es zeigt Ihnen, welche ausführbare Datei den Port geöffnet hat und welche PID Sie im Task-Manager nachschlagen müssen. ( netstat -?Führen Sie zunächst eine nicht privilegierte Shell aus, da ich es nicht gutheiße, blind etwas auszuführen , was Sie nicht verstehen, insbesondere in einem privilegierten Kontext.)

Folgendes tun die Schalter:

-a zeigt alle Verbindungen oder offenen Ports an, nicht nur aktive - der gewünschte Port lauscht wahrscheinlich und ist nicht aktiv.

-oZeigt die PID der Verbindung oder des Ports an, sodass Sie den Prozess auf der Registerkarte Prozesse des Task-Managers finden können. (Möglicherweise müssen Sie die PID-Spalte im Task-Manager hinzufügen. Ansicht-> Spalten auswählen)

-bZeigt die Binärdatei an, die beim Öffnen der Verbindung oder des Ports beteiligt ist. Dies ist derjenige, der erhöhten Zugriff erfordert.


quelle
Das ist ordentlich. Jetzt habe ich zumindest PIDdie Bewerbung. Vielen Dank.
Blaise
8
Dieser Befehl erzeugt viel Rauschen. Wenn Sie also direkt zur fehlerhaften Anwendung wechseln möchten, leiten Sie die Ergebnisse wie folgt an findstr weiter:netstat -aob | findstr '10360'
kmkemp
1
Alle anderen Antworten schickten mich in den Wald, diese erlaubte mir tatsächlich, die Quelle zu finden und das Problem zu beheben.
Hugh Jeffner
Sie können auch nestat -aob -p TCP verwenden, um nur TCP-Ports
anzuzeigen
12
  1. Schließen Sie den VS
    1. Starten Sie erneut - klicken Sie mit der rechten Maustaste und führen Sie es als Administrator aus
    2. Führen Sie Ihr Projekt erneut aus.
Mansi
quelle
Wenn angenommen wird, dass der Port von einem anderen Prozess verwendet wird, ändert sich der Port in Projekt> Eigenschaften> Debuggen und wird dann ausgeführt, während der Administrator arbeitet
Noman Chali,
Es ist ziemlich traurig, aber das hat funktioniert. Sonst hat nichts funktioniert. Der Fehler ist völlig falsch, da ich unter dem fraglichen Port keine laufenden Prozesse hatte. Dies scheint ein Fehler von Visual Studio und IISExpress zu sein. Es macht keinen Sinn, warum ich es schließen und erneut ausführen musste.
Mike
Dieser Schritt hat mein Problem nicht behoben.
user1451111
Glücklich und beunruhigt darüber, dass ein Administratorlauf nach Neustarts, Portänderungen, Prozessabbrüchen, Netstat-Jagden und iplisten-Änderungen erforderlich war. Arbeitete weiter, wenn es als Benutzer ausgeführt wurde.
Richard
9

EINFACHE LÖSUNG, DIE FÜR MICH ARBEITET HAT: ( Dank an die Kombination der Antworten anderer)

**My System Info:**
Windows 10 build : 1809
IIS Version      : 10.0.17763.1
Hyper-V          : Enabled
Docker           : Installed - 2.3.0.2 (45183)
  • Überprüfen Sie den Bereich für blockierte Ports in CMD (admin).

    >> netsh interface ipv4 show excludedportrange protocol=tcp
    
    (Sample output):
    Protocol tcp Port Exclusion Ranges
    Start Port    End Port
    ----------    --------
    49696       49795         (SEE HERE, 49796 to 49895 is not blocked)
    49896       49995
    ... list goes on ...
    
  • Öffnen Sie Visual Studio und navigieren Sie zu> Projekt> Eigenschaften> Web> Server> Projekt-URL

  • Verwenden Sie den nicht blockierten Port.

    (Sample port):
    http://localhost:49796/
    
  • Starten Sie Visual Studio neu (falls erforderlich)

  • Trinken Sie einen Kaffee und teilen Sie die Liebe. (erforderlich) :)

Naveen Kumar V.
quelle
3
Das ist fantastisch! Vielen Dank
Grandizer
Irgendeine Idee, warum ein bestimmter Bereich blockiert wird?
J Santosh
4
  1. Löschen Sie die SLN-Datei, falls vorhanden.
  2. Öffnen Sie die Datei C: \ Benutzer \ NN \ Dokumente \ IISExpress \ config \ applicationhost.config
  3. Suchen Sie die problematische Site in configuration / system.applicationHost / sites und löschen Sie den gesamten Site-Abschnitt.
  4. "Open Web Site .." von Visual Studio und das Projekt erhalten einen zufälligen neuen Port.
Jonas Äppelgran
quelle
Dies ist immer noch die beste Lösung.
Vincent
3

Wenn netstat nichts anzeigt, versuchen Sie einen Neustart.

Für mich ist in netstat nichts für meinen Hafen erschienen. Ich habe versucht, Google Chrome-Browserfenster zu schließen, wie von @Clangon und @JT Taylor vorgeschlagen, aber ohne Erfolg.

Am Ende hat jedoch ein Systemneustart funktioniert, sodass ich nur davon ausgehen kann, dass etwas anderes den Port heimlich offen gehalten hat. Oder vielleicht hat es nur länger gedauert, als ich bereit war zu warten, bis die Ports nach dem Herunterfahren von Chrome freigegeben wurden.

Paul Stephenson
quelle
Genau mein Szenario!
user1451111
3

Das Ausführen von Visual Studio im Verwaltungsmodus hat mein Problem gelöst

Mujtaba Zaidi
quelle
2

Öffnen Sie den Task-Manager und schließen Sie einfach alle Prozesse von 'IIS Express System Tray' und 'IIS Express Worker Process' und führen Sie das Projekt erneut aus

Task-Manager-Prozessdetails

SumairIrshad
quelle
2

Visual Studio 2015

  • Schließen Sie alle Dateien, die Sie in Visual Studio geöffnet haben.
  • Schließen Sie dann die Anwendung und beenden Sie Visual Studio.
  • Öffnen Sie Visual Studio und es sollte erfolgreich ausgeführt werden.

Ich hoffe das hilft.

Saurav Singh
quelle
2
Dies hat nichts mit den Ports zu tun. Lesen Sie die Frage bitte.
UmarZaii
Ich habe die Frage bereits gelesen, dann antworte nur ich, dass es auch bei mir passiert ist und ich habe das gleiche getan, was ich in dem Beitrag geschrieben habe und es funktioniert für mich.
Saurav Singh
Dann ist es wohl okay.
UmarZaii
Das hat es für mich behoben. So viele Probleme werden durch einen Neustart von Visual Studio behoben.
CapnChaos
Das hat es nur für mich behoben. Ich habe keine Ahnung, worüber sich UmarZaii beschwert.
Artexias
2

netstat hat nichts angezeigt, was den Port bereits verwendet hat

netstat -ano | findstr <your port number>zeigte mir nichts. Ich habe mit diesem Befehl herausgefunden, dass der Port ausgeschlossen wurde, um zu sehen, welche Bereiche von etwas anderem reserviert werden:

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>

In meinem Fall konnte ich den Bereich jedoch nicht entsperren. Ich habe nur "Zugriff verweigert" erhalten, sodass ich einen anderen Port für meine Site auswählen musste.

Meine ursprüngliche Lösung: Das einzige, was funktioniert hat, war das Löschen des .vs-Ordners im Lösungsordner. (Ich habe seitdem festgestellt, dass Sie stattdessen einfach die .vs / config / applicationhost.config löschen können, um zu vermeiden, dass so viele Einstellungen verloren gehen.)

John Leonard
quelle
Ich dachte, diese Lösung würde gut funktionieren, aber ich bekomme immer noch den Fehler. Der für mich fragliche Port (3333) erscheint überhaupt nicht in netstat -a.
Chris Walsh
1
@ChrisWalsh Dieses Problem trat bei mir erneut auf und ich habe zusätzliche Informationen herausgefunden, warum, also habe ich meine Antwort aktualisiert. Sie könnten sich im selben Boot wie ich befinden, der Hafen wurde nicht benutzt, sondern von etwas anderem reserviert (ausgeschlossen).
John Leonard
1

Für mich war der Google Chrome-Browser der Prozess, der den Port verwendete. Selbst nachdem ich Chrome geschlossen hatte, stellte ich fest, dass der Prozess weiterhin bestand (ich erlaube Chrome, "im Hintergrund ausgeführt" zu werden, damit ich Desktop-Benachrichtigungen erhalten kann). Ich ging in den Task-Manager, beendete den Chrome-Browserprozess und startete dann meine Webanwendung. Es funktionierte wie ein Zauber.

JT Taylor
quelle
1

Schließen Sie für mich alle Anwendungen und starten Sie den Computer neu.

Wenn das Fenster gestartet wird, öffnen Sie zuerst Visual Studio, öffnen Sie dann den Browser und klicken Sie auf Ausführen (F5).

Jetzt funktioniert es. Ich weiß nicht warum.

OammieR
quelle
1

Öffnen Sie Ihr csproj beispielsweise mit Notepad ++ und scrollen Sie nach unten zu DevelopmentServerPort. Ändern Sie es in etwas anderes, solange es über 1024 liegt, wie empfohlen (wie zum Beispiel 22312). Ändern Sie auch die IISUrl in http: // localhost: 22312 / . Speichern Sie Ihre Änderungen und starten Sie das Projekt neu.

K.Oleksiak
quelle
1

In meinem Fall gab es keine Anwendung, die den angegebenen Port verwendete, und die erhöhte Ausführung von Visual Studio half auch nicht.

Was für mich funktioniert hat, ist, IIS Express neu zu installieren und dann den Computer neu zu starten.

Mirhat
quelle
Dies war die einzige Option, die für mich unter Windows 10 1809 mit VS 2017 funktioniert hat.
Ganzheitlicher Entwickler
1

Für mich ist die "Der angegebene Port ist in Verwendung" Fehler in der Regel (auch tatsächlich gearbeitet arround) befestigt ist , durch Anhalten des "Internet Connection Sharing ( ICS )" (Sharedaccess ) und das "World Wide Web Publishing Service" ( W3SVC ) -Dienst.

Nach dem Start des Projekts / ISS Express können die gestoppten Dienste ohne Probleme erneut gestartet werden.

Immer wenn ich den Fehler erhalte, wird der Port (im 50000-Bereich) definitiv nicht verwendet (überprüft mit netstat & tcpview).

Es wäre schön, wenn Microsoft einige Integrationstests von Visual Studio / IIS Express zusammen mit HyperV und dem "normalen" IIS-Dienst durchführen würde ODER eine Anleitung geben würde, welche Portbereiche für VS / IIS Express verwendet werden sollen (und welche Ports vermieden werden sollen).

Michel
quelle
Dies war mein Problem und es hat ewig gedauert, es aufzuspüren, da ICS anscheinend nicht in netstat oder Resource Monitor angezeigt wird. Vielen Dank! Dummes $% @ * &&!) $ *!
James
1

Sie müssen diesen Parameter konfigurieren, indem Sie an der administrativen Eingabeaufforderung Folgendes ausführen:

netsh http add iplisten ipaddress = ::

Md. Rizwanul Islam
quelle
0

Für mich hat netstat den Trick getan, um mir zu zeigen, dass Fiddler lief, was den Hafen offen hielt.

Tony V.
quelle
1
Können Sie uns etwas mehr erklären?
Dieter Meemken
0

Klicken Sie auf die Benachrichtigung unten in der Taskleiste, wenn Sie den fehlerhaften verwendeten Port erhalten. Wählen Sie dann das iiss-Symbol aus, klicken Sie mit der rechten Maustaste und klicken Sie auf Beenden. Es funktioniert wie ein Zauber für mich

aschige Vicky
quelle
0

Die Fehlermeldung sollte Ihnen mitteilen, welche Anwendung den Port bereits verwendet - in meinem Fall explorer.exe, also nur ein Neustart des Explorers über den Task-Manager.

John M.
quelle
0

Ich hatte den gleichen Fehler beim Auftauchen. Ich hatte meinen Webdienst als Anwendung in IIS eingerichtet und habe ihn behoben durch:

Klicken Sie mit der rechten Maustaste auf mein WebService-Projekt in meiner Lösung> Eigenschaften> Web> Wechseln Sie unter "Server" von IIS Express zu lokalem IIS (es wird automatisch ein virtuelles Verzeichnis erstellt, das Ihren Wünschen entspricht).

Cristian G.
quelle
0

Wenn Port xxxx bereits verwendet wird, wird immer eine PID (Prozess-ID) mit dem Fehler erstellt. Gehen Sie einfach zum Task-Manager auf dem Computer, auf dem Sie die Anwendung ausführen, klicken Sie auf Details, und Sie werden feststellen, um welche andere Anwendung es sich handelt. Sie können dann entscheiden, ob Sie diesen Prozess beenden möchten oder nicht

Ken.Fukizi
quelle
0

Um das noch zu ergänzen, hatte ich die vollständige IIS-Funktion für einen meiner Computer aktiviert und es schien, dass dies zeitweise passierte.

Ich habe auch zufällige Beschwerden darüber erhalten, dass nach einer Weile Administratorrechte zum Binden von Websites erforderlich sind. Ich gehe davon aus, dass es sich irgendwie um die vollständige IIS-Konfiguration handelt (für die ein Administrator erforderlich ist, da es sich nicht um eine Datei pro Benutzer handelt).

Wenn Sie nicht weiterkommen und nichts anderes hilft (und Sie nicht einfach einen anderen Port auswählen möchten), überprüfen Sie, ob Sie diesen entfernt haben, falls vorhanden.

Dan Harris
quelle
0

FWIW, ich habe Tonnen dieser Optionen ausprobiert und bin nicht weitergekommen. Dann wurde mir klar, dass ich VMWare Player installiert hatte, kurz bevor das Problem begann. Ich habe es deinstalliert und dieser Fehler ist verschwunden.

Ich bin mir sicher, dass es eine Möglichkeit gibt, sie koexistieren zu lassen, aber ich brauche Player nicht wirklich, also habe ich ihn einfach entfernt. Wenn Sie alle möglichen Dinge ausprobiert haben und es nicht funktioniert, sollten Sie die kürzlich installierten Programme (insbesondere die, die sich mit Netzwerkadaptern befassen?) Durchsuchen und prüfen, ob Sie dadurch irgendwohin gelangen.

Warenzeichen
quelle
0

Wählen Sie in Visual Studio 2017 Projekt / Eigenschaften und dann die Option Web. Klicken Sie im Abschnitt IIS neben der Standard-Projekt-URL auf Virtuelles Verzeichnis erstellen. Dies löste das Problem für mich. Ich denke, in meinem Fall war das Standardprojekt Virtual Directory nach einer Debugging-Sitzung auf irgendeine Weise beschädigt worden.

user3615720
quelle
0

Führen Sie die folgenden Schritte aus, um dieses Problem zu beheben:

  1. Öffnen Sie den CMD-Lauf als Administratormodus
  2. Führen Sie dann den Befehl netsh http add iplisten ipaddress = :: aus

  3. Nach dem Ausführen des Projekts

Sumant Singh
quelle