89 Stimmen

Verbindung zum Visual Studio Debugging des IIS Express-Servers über das LAN herstellen

Ich habe eine Test ASP.NET MVC3-Anwendung, die in VS2012 entwickelt wurde. Wenn ich mit dem Debuggen beginne, wird die App vom Host-Computer über die Anfrage an http://localhost: aufgerufen. Aber wenn ich versuche, auf dieselbe Anwendung vom entfernten Computer im Intranet über http://: zuzugreifen, erhalte ich HTTP-Fehler 400: Schlechte Anforderung. Ungültiger Hostname. Da sie auf IIS Express läuft, ist keine Serverkonfiguration zugänglich.

Gibt es Möglichkeiten, dieses Problem zu lösen?

143voto

Garrett Fogerlie Punkte 4430

Aktualisierung

Ich habe ein Video erstellt, das den Prozess besser beschreibt, https://youtu.be/5ZqDuvTqQVs

Wenn Sie Visual Studio 2013 oder höher verwenden, stellen Sie sicher, dass Sie es als Administrator ausführen, damit dies funktioniert.


Öffnen Sie die Datei %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config (in VS2015 könnte es $(solutionDir)\.vs\config\applicationhost.config sein). Darin sollten Sie etwas wie dies sehen:

Ändern Sie bindingInformation=":8080:localhost" zu bindingInformation="*:8080:*" (die Portnummer, 8080 in meinem Fall, wird sich unterscheiden.)

Hinweis: Wenn es nicht funktioniert, versuchen Sie es mit bindingInformation="*:8080:, das Sternchen kann entfernt werden.

Stellen Sie dann sicher, dass Ihre Firewall eingehende Verbindungen auf diesem Port zulässt. Sie müssen möglicherweise das System neu starten oder zumindest Visual Studio, um IISExpress zu veranlassen, die Konfigurationsdatei neu zu laden.

Wenn dies nicht funktioniert, werfen Sie einen Blick auf diese Antwort: https://stackoverflow.com/a/5186680/985284

48voto

gregmac Punkte 23263

VisualStudio 2015 Non-Admin

  1. In Ihrem Lösungsverzeichnis ändern Sie in der Datei .vs\config\applicationHost.config die Zeile

    zu

    (wo 44302 Ihr Port ist)

  2. Von einer Administrator-Eingabeaufforderung:

    i. Nicht-Admin-Berechtigung zum Binden an Port aktivieren

    netsh http add urlacl url=http://*:44302/ user=Everyone

    ii. Durch die Firewall zulassen

    netsh advfirewall firewall add rule name="IISExpress visualstudio app" protocol=tcp localport=44302 dir=in action=allow

  3. Starten Sie das Debuggen von VisualStudio

22voto

shangkeyun Punkte 231

Außer der Änderung der iisexpress-Konfigurationsdatei müssen Sie manchmal auch den Befehl wie unten ausgeführt ausführen.

netsh http add urlacl url=http://\*:49419/ user=Everyone

15voto

oligofren Punkte 17762

Wie man vermeidet, Visual Studio als Administrator auszuführen

Unter Verwendung von sowohl Garret's als auch @shangkeyun's Antwort können Sie eine Verbindung zur laufenden Website herstellen, ohne Visual Studio als Administrator ausführen zu müssen:

  1. Öffnen Sie %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config

  2. Suchen Sie nach Ihrer Website unter Verwendung von name=MySiteName

  3. Verdoppeln Sie den vorhandenen Eintrag im Abschnitt. Sie sollten jetzt zwei Zeilen mit binding haben.

  4. Entfernen Sie den "localhost" Teil in bindingInformation.

  5. Es sollte jetzt so aussehen, vorausgesetzt der Port ist 12345:

  6. Ermöglichen Sie Nicht-Administratoren, sich an den Port zu binden

    netsh http add urlacl url=http://*:12345/ user=Everyone

EDIT 2019: gregmac hat einen Schritt hinzugefügt, um die VS-Instanz freizugeben. Ich habe das nie gebraucht, aber hier ist es trotzdem aufgelistet:

  1. netsh advfirewall firewall add rule name="IISExpress visualstudio app" protocol=tcp localport=12345 dir=in action=allow

10voto

hvaughan3 Punkte 10327

Da ich nicht in der Lage bin, einen Kommentar zu dem Beitrag von @Garret Fogerlie hinzuzufügen und als Antwort auf das Problem der Kommentatoren (@Y.Ecarri und @SamuelEdwinWard), habe ich gemacht, was Garret vorgeschlagen hat, Visual Studio 2013 verwendet, im Admin-Modus ausgeführt und die application.config Datei geändert.

Nachdem ich das Debuggen gestartet hatte und feststellte, dass ich die gleiche Fehlermeldung bekam, ging ich zurück zur application.config und sah, dass ein neuer Eintrag für meine Seite erstellt wurde, genau wie bei Y.Ecarri's Problem.

Also habe ich das Debuggen angehalten, meine Lösung in Visual Studio offen gelassen und die application.config Datei erneut für den neuen Eintrag bearbeitet. Ich habe auch einfach die * Zeichen und localhost entfernt, so dass ich für den neuen Eintrag folgendes hatte:

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X