wake-up-neo.com

Ich kann mit ip: port nicht auf die WEB-API zugreifen, aber im VS-Debug-Modus mit localhost: port

Ich versuche, eine WEB-API von .net zu schreiben, und versuche, dass meine Android-Anwendung einige Daten aus der SQL Server-Datenbank abfragt.

Ich habe das Web-API geschrieben und es funktioniert gut im Debug-Modus.

Meine Frage ist, dass die URL dieser Anwendung localhost:port ist und sie funktioniert einwandfrei ..__ Wenn ich jedoch versuche, sie in MYIP:port (eg. http:192.168.X.1234) oder MYHOSTNAME:port (eg win7home:1234) zu ändern, gibt mir Bad Request - Invalid Hostname.

Ich weiß, dass ich dies für IIS bereitstellen kann und mein IIS eingerichtet ist, aber ich habe mich nur gefragt, warum es im Debug-Modus nicht funktioniert. 

Gibt es eine Möglichkeit für mich, es im Debug-Modus auszuführen und gleichzeitig auf meinem Android zu testen, anstatt es jedes Mal einsetzen zu müssen, wenn ich eine Änderung vornehmen möchte?

32
noobiehacker

Die Antworten von Anton und Matthew wiesen mich in die richtige Richtung

Also das, was ich getan habe

  1. Führen Sie Visual Studios im Administratormodus aus

  2. Die Bindungsprotokolle wurden geändert und die eingehenden Anweisungen werden vorgeschlagen http://johan.driessen.se/posts/Accessing-an-IIS-Express-site-from-a-remote-computer

    Aber danach habe ich einen Fehler, der nicht verfügbar ist (503)

  3. Also folgte ich diesem: IIS Express Enable External Request - 503 Nur das Port-Protokoll und das Port hinzugefügt: IP-Protokoll, 

Dann funktioniert es sowohl im Browser meines Computers als auch auf meinem Telefon.

Nicht zu sicher, warum der 3. Schritt erforderlich ist - meine Hypothese ist (die localhost-URL ist erforderlich, damit VS darauf verweist, und die ip-URL wird für den Zugriff von einem anderen Computer aus verwendet)

14
noobiehacker

Wenn Sie es im Debug-Modus ausführen, gehe ich davon aus, dass Sie IIS-Express verwenden.

Standardmäßig bindet IIS-Express nur an localhost.

Um dies zu umgehen, können Sie die Konfigurationsdatei der IIS-Express-Anwendung unter C:\Users\<username>\My Documents\IISExpress\config\applicationhost.config öffnen und die Bindungsinformationen der Site ändern.

veränderung

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

zu

<binding protocol="http" bindingInformation="*:55284:*" />

Nach der Änderung müssen Sie auch IIS-Express neu starten.

37
Matthew

Ich hatte die gleichen Probleme, als ich meinen localhost IIS freigeben wollte, sodass einige Leute einfach meinen Computernamen oder meine IP-Adresse eingeben und eine Verbindung zu meiner Webanwendungsinstanz herstellen konnten. Wenn dies der Fall ist, benötigen Sie http://johan.driessen.se/posts/Accessing-an-IIS-Express-site-from-a-remote-computer . Es funktioniert für mich sowohl für Silverlight- als auch für MVC-Apps. Ich habe sogar Haltepunkte gesetzt und sie werden von einem entfernten Rechner aus getroffen.

6
Anton

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

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

zu

<binding protocol="http" bindingInformation=":1234:192.168.1.35" />

und führen Sie Visual Studio als Administrator aus. Neustart IIS Express. Diese Lösung funktioniert für mich.

1
Ahmad Aghazadeh

Hatte das gleiche Problem beim Debuggen in Visual Studio Code , löste ich es durch Folgendes:

"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, nicht jedoch mit ip-Adresse.

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