Remote Verbindung .net core selbst gehosteten web-api
Habe ich eine einfache .net-core-web-api mit einer Aktion:
[Route("[action]")]
public class APIController : Controller
{
//GET api/values
[HttpGet]
public string Ping()
{
return DateTime.Now.ToString();
}
}
Wenn ich dieses über dotnet laufen bekomme ich
Hosting environment: Production
Content root path: C:\Users\xxx\Documents\Visual Studio 2015\Projects\SelfHostTest\src\SelfHostTest
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
Gehen, um den browser und die Eingabe http://localhost:5000/ping Ergebnisse in einer erfolgreichen Rückkehr von der aktuellen Zeit. Jedoch geht auf eine remote-Maschine (Gleiches LAN) und versucht, Zugriff auf den service über http://odin:5000/ping Ergebnisse in einem 404-Fehler. (Odin ist der name der Maschine mit dem web-api in einer Konsole über dotnet laufen).
Server (und client!) firewalls sind ausgeschaltet. Ich kann ping "odin" erfolgreich.
Irgendwelche Ideen, was einfacher Schritt, ich bin hier fehlen. Ich habe versucht, das zu Hause und bei der Arbeit, ohne Erfolg.
- Was passiert, wenn Sie versuchen mit der IP-Adresse von 'odin'? Ex: 192.111.11.2:5000 ? Kann sein this kann Euch helfen.
- dasselbe versuchte 192.168.1.2 , sowohl auf server-und auf client. 127.0.0.1 funktioniert auf dem server aber!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Meine Vermutung ist, dass das Problem ist nicht der controller, es ist im Programm.cs. Sie müssen ändern Sie den Bau Ihres WebHost
Es sei denn, Sie fügen die UseUrls Linie, Turmfalke ist nicht zu hören außerhalb von localhost. Dies macht Sinn, weil in einer normalen situation Kestrel sitzt hinter einem reverse-proxy wie IIS oder NGNIX und nicht zu binden, müssen externe URLs.
.UseUrls("http://*:5000")
statt zu akzeptieren, dass jede eingehende Anfragen von port5000
!Können Sie einfach das folgende tun, um erstellen Sie Ihr WebHost, dies wird die remote-verbindungen erlauben auf kestrel.
Nachdem mit dem folgenden code, den ich noch nicht in der Lage, Zugriff auf meine Remote-API, musste ich deaktivieren Sie die Netzwerk-Adapter erstellt von Docker in der windows-Systemsteuerung (Systemsteuerung\Netzwerk und Internet\Netzwerkverbindungen)
In meinem Fall (.NET core 2.1) ich hatte zum ändern der
Properties/launchSettings.json
Datei.Legen Sie die
applicationUrl
um eine Liste der zulässigen urls durch Semikolon getrennt, wie diesHoffe, dies hilft jemand da draußen.
Gibt es einen genauer Weg, wenn es multi-IP-Adressen auf dem lokalen Rechner verfügbar. Schließen Sie einen UDP-socket und Lesen Sie Ihre lokalen Endpunkt:
Einen anderen Weg zur Lösung dieses Problems ist die Bearbeitung von "applicationhost.config" - Datei.
im Projekt-Ordner -> .vs (Versteckter Ordner) -> config
öffnen Sie "applicationhost.config" - Datei. Unter " sites-Abschnitt, Website name="euer Projekt name" in den Bindungen-Knoten hinzufügen, die eine andere Bindung, und ändern Sie localhost durch Ihre "IP/Domain" auf "bindingInformation", wie Dieses:
erinnern Visual Studio muss als Administrator ausgeführt werden.