2016-03-25 3 views
1

Bevor Sie es doppelt kopieren, lesen Sie bitte durch.Kann nicht selbst gehostet (mit Konsole) asp. NET 5 Web API über LAN

Ich benutze einfache Web-Hosting-Option von Visual Studio 2015, die die Standard-Vorlage Web-API über localhost: 5000 Port hostet.

Bitte beachten Sie, dass ich nicht mit IIS Express, eine Menge Fragen für IIS-Hosting sind.

Ich kann sie einfach mit http://localhost:5000/api/values verbrauchen. Wenn ich jedoch versuche, diese API von einem anderen System zu verwenden, das sich im LAN befindet und eine geeignete IP anstelle von localhost verwendet, kann sie sich einfach nicht verbinden und zeigt einen Fehler bei der Verbindung mit der URL an.

Sie können versuchen, diese leicht zu reproduzieren:

  1. Erstellen Sie eine ASP .NET 5 Web api mit Visual Studio 2015
  2. Wählen Sie die "Web" Option trotz "IIS Express", während die Lösung läuft . Dies würde die ASP .NET Web-API-Konsole über den Port 5000.
  3. Jetzt können wir den Web-api verbrauchen durch Anschlagen: http://localhost:5000/api/values
  4. Allerdings, wenn ich versuche, das gleiche von einem anderen System über LAN zu tun (localhost Ändern IP aneignen), Ich kann keine Verbindung herstellen.
  5. Auch, wenn ich versuche, mein System von einem anderen System über LAN anpingen, bekomme ich angemessene Antwort.

Jede Hilfe wäre willkommen.

+0

Scheint so, als würde es jeden Zugriff ablehnen, aber von 'localhost'. Was passiert, wenn Sie die App ordnungsgemäß veröffentlichen und dann starten? Ich wette, es verhält sich nicht so, wenn man es anstellt. Es muss einen Config-Schalter geben, damit er sich so verhält, wie Sie möchten (dh nicht den Zugriff für alle außer localhost verweigern). –

+0

Wenn ich ihn über IIS hosten und dann versuchen von Remote-Computer über LAN darauf zuzugreifen, kann ich immer noch ' t es funktioniert. Ich erhalte die Meldung "HTTP Error 400. Der Hostname der Anfrage ist ungültig" in diesem Fall. – Randeep

+0

Möglicherweise wegen des falschen Inhalts des 'Host: ...' Feldes in dieser HTTP-Anfrage. Versuchen Sie, es auf 'localhost' oder' 'vielleicht zu setzen? Alles in allem, wenn Sie Ihre Web-App einsetzen oder veröffentlichen, sollten diese Probleme mit der Unzugänglichkeit sowieso bestehen. –

Antwort

2

Bearbeiten Sie die project.json Datei, finden Sie die „Befehle“ Abschnitt und den Wert der „web“ Taste bearbeiten wie folgt zu sein:

"web": "Microsoft.AspNet.Server.Kestrel --server.urls=http://*:5000" 

Dieser Kestrel von allen auf allen Adressen zu hören verursacht Schnittstellen. Sie sollten auch die Firewall-Einstellungen überprüfen. ist 5000 blockiert?

+0

Wow. das hat funktioniert. Aber ist das die perfekte Lösung? – Randeep

+0

Sieht aus wie das ist die Lösung. Ich markiere es beantwortet. Könnten Sie mir bitte auch einige Referenzen nennen, um etwas darüber zu erfahren? – Randeep

+0

@DotnetRocks - sieht aus wie ein guter Überblick kann hier gefunden werden: https://docs.asp.net/de/latest/fundamentals/servers.html?highlight=kestrel –

Verwandte Themen