wake-up-neo.com

Herstellen einer Verbindung zum Debuggen in Visual Studio IIS Express Server über das LAN

Ich habe eine ASP.NET MVC3-Testanwendung, die in VS2012 entwickelt wurde. Wenn ich mit dem Debuggen beginne, wird von der Host-Maschine aus über die Anforderung an http://localhost:<portnumber> auf die App zugegriffen. Wenn ich jedoch versuche, dieselbe Anwendung von der Remote-Maschine im Intranet aus über http://<ip>:<portnumber> aufzurufen, bekomme ich HTTP error 400: Bad request. Invalid Host Name.. Soweit sie unter IIS Express ausgeführt wird, ist auf eine Serverkonfiguration kein Zugriff möglich.

Gibt es Möglichkeiten, dies zu lösen?

70
gator88

Update

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

Wenn Sie VS2013 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 kann es sich um $(solutionDir)\.vs\config\applicationhost.config handeln). Drinnen sollte man so etwas sehen:

<site name="WebSite1" id="1" serverAutoStart="true">
    <application path="/">
        <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:8080:localhost" />
    </bindings>
</site>

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

Hinweis: Wenn dies nicht funktioniert, versuchen Sie es mit bindingInformation="*:8080:. Der Stern kann entfernt werden.

Stellen Sie dann sicher, dass Ihre Firewall an diesem Port eingehende Verbindungen zulässt. Möglicherweise müssen Sie das System oder mindestens Visual Studios neu starten, damit IISExpress die Konfigurationsdatei neu lädt.

Wenn dies nicht funktioniert, schauen Sie sich diese Antwort an: https://stackoverflow.com/a/5186680/985284

121

VisualStudio 2015 Nicht-Admin

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

    <binding protocol="http" bindingInformation="*:44302:localhost" /> 

    zu

    <binding protocol="http" bindingInformation=":44302:" />

    (wobei 44302 Ihr Hafen ist)


  1. Von einer Admin-Eingabeaufforderung:

    ich. Aktivieren Sie Nicht-Administratoren, um an den Port zu binden

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

    ii. Firewall durchlassen 

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


  1. Starten Sie das Debuggen von VisualStudio
27
gregmac

Abgesehen von der Änderung der iisexpress-Konfigurationsdatei müssen Sie manchmal auch den folgenden Befehl ausführen.

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

19
shangkeyun

Da ich nicht in der Lage bin, @Garret Fogerlies Beitrag und als Antwort auf die Ausgabe der Kommentatoren (@ Y.Ecarri und @SamuelEdwinWard) einen Kommentar hinzuzufügen, folgte ich den von Garret vorgeschlagenen Anweisungen, indem sie ihn mit Admin Studio 2013 im Admin-Modus ausführte und den Admin-Modus verwendete application.config datei.

Nachdem ich Debug gestartet hatte und gesehen hatte, dass ich dieselbe Fehlermeldung erhielt, ging ich wieder zu application.config und sah, dass ein neuer Eintrag für meine Site genau wie bei Y.Ecarri erstellt wurde.

Also hörte ich mit dem Debuggen auf, hielt meine Lösung in Visual Studio geöffnet und bearbeitete die application.config-Datei erneut für den neuen Eintrag. Ich habe auch einfach * sings und localhost komplett entfernt, sodass ich für den neuen Eintrag Folgendes hatte:

<binding protocol="https" bindingInformation=":44300:" />

10
hvaughan3

So vermeiden Sie es, Visual Studio als Administrator auszuführen

Mit Garrets und @shangkeyun's answer können Sie eine Verbindung zur laufenden Website herstellen, ohne dass Sie Visual Studio als Administrator ausführen müssen:

  1. %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config öffnen
  2. Suchen Sie Ihre Website mit name=MySiteName
  3. Duplizieren Sie den vorhandenen <binding>-Eintrag im Abschnitt <bindings>. Sie sollten jetzt zwei Zeilen mit binding haben.
  4. Entfernen Sie den Teil "localhost" in bindingInformation.
  5. Es sollte jetzt so aussehen, vorausgesetzt, der Port ist 12345:

    <binding protocol="http" bindingInformation="*:12345:localhost" />
    <binding protocol="http" bindingInformation="*:12345:" />
    
  6. Entfernen Sie alle Firewall-Einschränkungen, indem Sie den folgenden Befehl als Administrator ausführen:

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

Danke an byteit:

Rufen Sie die Datei applicationhost.config in Documents/IISExpress/config auf

finden Sie den Eintrag für die bestimmte Site, an der Sie gerade arbeiten:

hinzufügen: 

<binding protocol="http" bindingInformation="*:<your site port>:*" />

vor dem bestehenden

 <binding protocol="http" bindingInformation="*:<your site port>:localhost" />

Um die Lösung ohne VS2013 zu erreichen, erstellen Sie beim Neustart einen neuen Website-XML-Eintrag. Sie müssen als Administrator ausgeführt werden.

1
Isaac Bolinger

Hatte das Problem ein sehr ähnliches Problem in Visual Studio Code , beendete ich es durch Hinzufügen von:

"env": {
      // ...
      "ASPNETCORE_URLS": "http://*:5000" // change to the port you are using
      // ...
},

.. bis launch.json

Anscheinend bindet es standardmäßig das http-Protokoll an 'localhost: 5000'. Daher funktioniert es mit localhost, jedoch nicht mit ip-Adresse - weder remote noch lokal.

Wenn Sie versuchen, einen Haltepunkt durch eine Anforderung zu erreichen, die von einem anderen Computer stammt, vergessen Sie nicht, Ihre Firewall-Einstellungen (und/oder Antivirenprogramme) zu überprüfen.

hoffe das hilft

0

Einige von Ihnen verbringen möglicherweise viel Zeit mit dem Ändern des Verzeichnisses% USERPROFILE%. Wenn Sie mit VS debug arbeiten, verwenden Sie $ (solutionDir) .vs\config\applicationhost.config

0
carlo818

Das hat bei mir funktioniert: 

  • Starten Sie den IIS Manager
  • Fügen Sie ein neues virtuelles Verzeichnis hinzu, das auf den Projektordner verweist (in meinem Fall C:\VSProjects).
  • Wählen Sie das neue virtuelle Verzeichnis im Manager IIS aus. Wählen Sie Directory Browsing aus der Liste der Optionen. Auf der rechten Seite befindet sich eine Enable-Schaltfläche. Klick es. 

Jetzt kann ich über mypcname\VSProjects\myProj\outputBinViewer auf meinen Ordner und meine Projektablage zugreifen. 

0
SaiyanGirl

Nach den obigen Konfigurationen musste ich Visual Studio im Verwaltungsmodus ausführen.

 enter image description here

0
Arun Prasad E S