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?
Die Antworten von Anton und Matthew wiesen mich in die richtige Richtung
Also das, was ich getan habe
Führen Sie Visual Studios im Administratormodus aus
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)
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)
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.
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.
Ä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.
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