Ich habe eine ASP.NET MVC3-Testanwendung, die in VS2012 entwickelt wurde. Wenn ich mit dem Debuggen beginne, wird vom Host-Computer über die Anfrage an auf die App zugegriffen http://localhost:<portnumber>
. Wenn ich jedoch versuche, über den Remotecomputer im Intranet über dieselbe Datei auf dieselbe Anwendung zuzugreifen, kann http://<ip>:<portnumber>
ich nicht HTTP error 400: Bad request. Invalid Host Name.
auf eine Serverkonfiguration zugreifen , sofern diese unter IIS Express ausgeführt wird.
Gibt es Möglichkeiten, dies zu lösen?
Antworten:
Aktualisieren
Ich habe ein Video gemacht, 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
(möglicherweise in VS2015$(solutionDir)\.vs\config\applicationhost.config
). Im Inneren sollten Sie so etwas sehen:Ändern Sie das
bindingInformation=":8080:localhost"
inbindingInformation="*:8080:*"
(die Portnummer, in meinem Fall 8080, unterscheidet sich.)Hinweis: Wenn es nicht funktioniert, kann der Versuch mit
bindingInformation="*:8080:
dem Sternchen entfernt werden.Stellen Sie dann sicher, dass Ihre Firewall eingehende Verbindungen an diesem Port zulässt. Möglicherweise müssen Sie das System oder zumindest Visual Studio neu starten, damit IISExpress die Konfigurationsdatei neu lädt.
Wenn dies nicht funktioniert, sehen Sie sich diese Antwort an: https://stackoverflow.com/a/5186680/985284
quelle
<site name="Website1(1)" id="2" serverAutoStart="true">
ich kann immer noch nicht von einem anderen Computer auf die Website zugreifen.bindingInformation="*:8080:*"
hat bei mir nicht funktioniert und zu dem Problem geführt, das @ Y.Ecarri hatte. Was schließlich funktionierte, war das Ablegen der Sternchen :bindingInformation=":8080:"
. Junge, hat mich das verrückt gemacht, ich hoffe es hilft jemandem.bindingInformation=":8080:"
(ohne *)VisualStudio 2015 Nicht-Administrator
.vs\config\applicationHost.config
Ändern Sie in Ihrem Lösungsverzeichnis in der Datei die Zeile<binding protocol="http" bindingInformation="*:44302:localhost" />
zu
<binding protocol="http" bindingInformation=":44302:" />
(wobei 44302 Ihr Hafen ist)
An einer Admin-Eingabeaufforderung:
ich. Aktivieren Sie Nicht-Administrator, um an Port zu binden
netsh http add urlacl url=http://*:44302/ user=Everyone
ii. Durch Firewall zulassen
netsh advfirewall firewall add rule name="IISExpress visualstudio app" protocol=tcp localport=44302 dir=in action=allow
quelle
Außer um die iisexpress-Konfigurationsdatei zu ändern, müssen Sie manchmal auch den folgenden Befehl ausführen.
netsh http add urlacl url = http: // *: 49419 / user = Jeder
quelle
So vermeiden Sie das Ausführen von Visual Studio als Administrator
Mit der Antwort von Garret und @ shangkeyun können Sie eine Verbindung zur laufenden Website herstellen, ohne Visual Studio als Administrator ausführen zu müssen:
%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
name=MySiteName
<binding>
Element im<bindings>
Abschnitt. Sie sollten jetzt zwei Zeilen mit habenbinding
.Es sollte jetzt so aussehen, vorausgesetzt der Port ist
12345
:Aktivieren Sie Nicht-Administrator, um an Port zu binden
EDIT 2019: gregmac hat einen Schritt hinzugefügt, um die VS-Instanz auf die Whitelist zu setzen. Ich habe das nie gebraucht, aber trotzdem aufgelistet:
netsh advfirewall firewall add rule name="IISExpress visualstudio app" protocol=tcp localport=12345 dir=in action=allow
quelle
Da ich @Garret Fogerlies Beitrag und als Antwort auf das Problem der Kommentatoren (@ Y.Ecarri und @SamuelEdwinWard) keinen Kommentar hinzufügen kann, habe ich die Vorschläge von Garret befolgt, Visual Studio 2013 verwendet, ihn im Admin-Modus ausgeführt und das geändert
application.config
Datei.Nachdem ich das Debug gestartet und festgestellt hatte, dass ich dieselbe Fehlermeldung erhalten hatte, ging ich zurück
application.config
und stellte fest, dass ein neuer Eintrag für meine Site erstellt wurde, genau wie das Problem von Y.Ecarri.Also habe ich das Debuggen beendet, meine Lösung in Visual Studio geöffnet und die
application.config
Datei für den neuen Eintrag erneut bearbeitet . Ich habe auch einfach die*
Sings entfernt undlocalhost
komplett, so dass ich für den neuen Eintrag folgendes hatte:<binding protocol="https" bindingInformation=":44300:" />
quelle
Einige von Ihnen verbringen möglicherweise viel Zeit mit dem Ändern und Testen in Ihrem% USERPROFILE% -Verzeichnis. Wenn Sie ein VS-Debug ausführen, verwenden Sie $ (solutionDir) .vs \ config \ applicationhost.config
quelle
Dank byteit:
Wechseln Sie zu applicationhost.config in Documents / IISExpress / config
Suchen Sie den Eintrag für die Site, an der Sie arbeiten:
hinzufügen:
vor dem bestehenden
Um die Lösung ohne VS2013 zu erreichen, erstellen Sie beim Neustart einen neuen XML-Eintrag für die Website. Sie müssen als Administrator ausgeführt werden.
quelle
Nach den obigen Konfigurationen musste ich Visual Studio im Verwaltungsmodus ausführen.
quelle
Das hat bei mir funktioniert:
C:\VSProjects
in meinem Fall).Directory Browsing
aus der Liste der Optionen. Auf der rechten Seite befindet sich einEnable
Knopf. Klick es.Jetzt kann ich über auf meinen Ordner und Projektkorb im Netzwerk zugreifen
mypcname\VSProjects\myProj\outputBinViewer
.quelle
Hatte das Debuggen eines sehr ähnlichen Problems in Visual Studio Code , löste ich es durch Hinzufügen von:
.. zu starten.json
Anscheinend bindet es das http-Protokoll standardmäßig an 'localhost: 5000', sodass es mit localhost funktioniert, jedoch nicht mit der IP-Adresse - weder remote noch lokal.
Wenn Sie versuchen, einen Haltepunkt durch eine Anforderung von einem anderen Computer zu erreichen, vergessen Sie nicht, Ihre Firewall-Einstellungen (und / oder Antivirenprogramme) zu überprüfen.
hoffe das hilft
quelle