Ich habe meine App c #, asp.net 5, mvc 6 auf einem Windows 2008-Server bereitgestellt. Ich habe gestartet dnx web
und es hört Port 5000 ab und funktioniert einwandfrei, wenn vom lokalen Computer aus zugegriffen wird.
Wie kann ich nicht-lokale Host-Anfragen abhören?
PS Diese Frage ist kein Duplikat davon ... sie bezieht sich auf asp.net vor RC1, wenn hosting.ini tatsächlich ein INI-Format hatte. Jetzt ist es JSON und ich kann keine Dokumentation darüber finden, was eigentlich darin sein sollte.
PPS Die eigentliche Lösung liegt in der nicht akzeptierten Antwort auf die verknüpfte Frage mit einer massiven Einschränkung. Schritte:
- Ändern Sie Ihre project.json gemäß der verknüpften Antwort.
- Veröffentlichen Sie Ihr Projekt auf Ihrem Server.
- Wechseln Sie auf dem Server in den Ordner ... \ approxot \ src \ YourProject und öffnen Sie dort ein Befehlsfenster.
- Ausführen
dnx web
- es wird fehlschlagen - Lauf
dnu restore
- Führen Sie 'dnu build' aus
- Führen Sie 'dnx web` aus - der Webserver sollte jetzt einwandfrei starten
PS Für Leute, die diese Frage unterstützen. Es ist veraltet. Sehr schlecht veraltet!
Dies galt für die frühen Versionen von .NET Core. Die Frage und die Antworten gelten sicherlich nicht für die aktuellen Versionen des Frameworks (z. B. 2.x, 3.x).
quelle
dnu restore
gefolgtdnu build
und danndnx web
richtig gestartet. Ich weiß nicht, warum es passiert, aber zumindest kann ich es zum Laufen bringen. Es gibt definitiv einen Fehler, der vor der endgültigen Veröffentlichung behoben werden muss. Im Moment ist dies die Problemumgehung.server.urls
Parameter in der Anwendungskonfigurationsdatei oder in Befehlszeilenparametern angeben . Der Wert kann mehrere durch Semikolons getrennte Werte haben (siehe hier) . Der Dateiname der Konfiguration kann hosting.json sein , aber nicht nur json: siehe Problem .--config
kann verwendet werden, um den Namen der Konfigurationsdatei anzugebenAntworten:
Die vom Kestrel-Server verwendete Standardkonfigurationsdatei lautet
hosting.json
. Der Name wurde in verschiedenen Beta-Versionen mehrfach geändert. Wenn Sie jetztproject.json
mit dem folgenden"command"
Abschnitt verwendendann beim Starten des Servers über die Kommandozeile von
Die Datei
hosting.json
wird gelesen. Die Dateikonfiguriert den Server so, dass bei jeder IP4-Adresse 5000 abgehört werden. Die Konfiguration
informiert, um 5000 sowohl auf IP4- als auch auf IP6-Adresse abzuhören.
Alternative Konfigurationsdateien können durch die
ASPNET_ENV
Umgebungsvariable der Verwendung oder durch die Verwendung von--config myconfig1.json
(oderconfig=myconfig1.json
) angegeben werden. Zum Beispiel können Sie verwendenund um eine
hosting.Development.json
Datei mit einer bestimmten Konfiguration zu erstellen . Alternativ können Sieproject.json
mit verwendenund starten Sie den Server durch Verwendung
Ich muss zusätzlich daran erinnern, dass es erforderlich sein kann, dass Sie zusätzlich zuhören und sich registrieren lassen (um zu beginnen
dnx web
). Dies ist aufgrund der Firewall und der lokalen Sicherheit beim Abhören neuer TCP / HTTP-Ports erforderlich. Etwas wie das Folgende sollte die lokale Registrierung und das Abhören von 5000 Ports für alle (IPv4 und IPv6) ermöglichen:Um sicherer zu sein, können Sie die obige Konfiguration anpassen, um minimale Rechte zu gewähren.
AKTUALISIERT: Danke @BlaneBunderson. Man kann * statt IP - Adresse verwenden (wie
http://*:5000
) auf hört irgendwelche IP4 und IP6 Adressen von jeder Schnittstelle. Man sollte vorsichtig sein und diese nicht benutzenhttp://*:5000;http://::5000
http://::5000;http://*:5000
http://*:5000;http://0.0.0.0:5000
http://*:5000;http://0.0.0.0:5000
weil es erforderlich ist, die IP6-Adresse
::
oder die IP4-Adresse0.0.0.0
zweimal zu registrieren .Entspricht der Ankündigung
Ich denke, dass das Verhalten in Zukunft geändert werden könnte. So würde ich empfehlen , nur zu verwenden
*:5000
,0.0.0.0:5000
und::5000
für die Registrierung von jeder IT - Adresse zu bilden.AKTUALISIERT 2: ASP.NET Core RC2 ändert (siehe Ankündigung ) das Verhalten beim Laden der Standardeinstellungen. Man muss Änderungen an der vornehmen
Main
, um die Einstellungenhosting.json
und die Befehlszeilenparameter zu laden . Unten finden Sie ein Beispiel für die VerwendungDie obige Code verwendet drei Bindungen:
"http://*:1000"
,"https://*:1234"
,"http://0.0.0.0:5000"
standardmäßig anstelle der Nutzung (sein um genau die Verwendung des Standard - Port 5000 standardmäßighttp://localhost:5000
). Der Anruf von.UseConfiguration(config)
erfolgt nach.UseUrls
. Daherhosting.json
überschreibt die von der Konfiguration geladene Konfiguration oder die Befehlszeile die Standardoptionen. Wenn Sie eine.SetBasePath(Directory.GetCurrentDirectory())
Zeile entfernen ,hosting.json
wird diese aus demselben Verzeichnis geladen, in dem die Anwendungs-DLL kompiliert wird (zum Beispielbin\Debug\netcoreapp1.0
).Man kann Ausführung wie verwenden
um die Standardeinstellungen (von
UseUrls
) und die Einstellungen von der"server.urls"
Eigenschaft zu überschreiben,hosting.json
falls vorhanden.Auf die gleiche Weise könnte man die ULR-Einstellungen überschreiben, indem man die Umgebungsvariable setzt
dann der Standard der Anwendung beginnen
dotnet.exe run
wird verwendenhttp://localhost:12541/
für die Bindung.Sie können finden hier ein Beispiel für die Verwendung von HTTPS - Bindung.
HINWEIS: Der Name der Umgebungsvariable wird von geändert
ASPNETCORE_SERVER.URLS
zuASPNETCORE_URLS
späteren Versionen von ASP.NET (siehe hier die Dokumentation von ASP.NET - Core 3.1).quelle
http://*:5000
das das gleiche ist wiehttp://::5000;http://0.0.0.0:5000
und nichthttp://0.0.0.0:5000
. Es erzwingt das Abhören von IPv4 und IPv6. Sie können es durch Verwendunghttp://*:5000;http://::5000
oder überprüfenhttp://::5000;http://*:5000
. Beim Registrieren der zweiten Adresse wird der Fehler "Microsoft.AspNet.Server.Kestrel.Networking.UvException: Fehler -4091 EADDRINUSE-Adresse wird bereits verwendet" angezeigt. In einigen Szenarien ist die Registrierung von IPv4 und IPv6 gut, in anderen Szenarien nicht gut. In jedem Fall ist es gut, den Weg zu erwähnen..UseStartup<Startup>()
überschreiben.UseConfiguration(config)
?In RC2 wird der Befehlsabschnitt von project.json nicht mehr verwendet. Ich habe Kestrel noch nicht dazu gebracht, die Datei hosting.json zu übernehmen, aber Sie können den Port programmgesteuert im Main der Anwendung festlegen, in der der neue WebHostBuilder erstellt und konfiguriert wird. Fügen Sie einfach die .UseUrls () -Methode wie im folgenden Beispiel hinzu
quelle
.UseUrls("http://*:5000")
stattdessen verwendet und 5000 mit leerer Host-IP auf VirtualBox weitergeleitet, und schließlich kann ich von meinem Mac aus auf die von Docker gehosteten .NET Core-Endpunkte zugreifen. Süss!Wenn Sie asp.net core 2.1 + verwenden, ändern Sie den Konfigurationsabschnitt in appsettings.json.
quelle
ASPNETCORE_URLS
hat bei mir nicht funktioniertWenn Sie versuchen, eine ASP.NET Core-Anwendung in einen Docker-Container zu stellen (dies war mein Anwendungsfall für das Abhören von nicht lokalen Hostadressen), beachten Sie, dass dieser Anwendungsfall bereits von Microsoft für Sie zusammengestellt wurde. Sie können den vollen Ruhm unter https://hub.docker.com/r/microsoft/aspnetcore/ sehen.
Derzeit (v1.0.1) besteht die Schlüsselmagie zur Lösung dieses Problems darin, dass die Quell-Docker-Datei eine URL-Umgebungsvariableneinstellung enthält und die Anwendung nicht versucht, diese zu überschreiben. (In der Tat sollte eine containerisierte Anwendung intern so wenig wie möglich über die Umgebung aussagen, in der sie ausgeführt wird.)
Beachten Sie dort das Pluszeichen und nicht das Sternchen. Ich empfehle tatsächlich, den obigen Dockerhub-Link zu besuchen, anstatt meine Antwort zu lesen, solange der Link gut ist. Version 1.1 steht vor der Tür und die Dinge könnten sich in Zukunft wieder ändern.
Stellen Sie beim Ausführen des Containers sicher, dass der Gastport 80 gemäß der Einstellung der Umgebungsvariablen verfügbar gemacht wird. Beispielsweise:
quelle
Fügen Sie für AspNetCore 3.1+ einfach die folgende Zeile in die Datei ein
appsettings.json
:quelle
Setzen Sie die Umgebungsvariable
ASPNETCORE_URLS
aufhttp://0.0.0.0:5000/
.Wenn Sie in Visual Studio ausgeführt werden, fügen Sie die Umgebungsvariable auf der Registerkarte Debug der Projekteigenschaften hinzu.
quelle