it-swarm.com.de

Wie wird der Port angegeben, auf dem eine ASP.NET Core-Anwendung gehostet wird?

Wie kann ich bei Verwendung von WebHostBuilder in einem Main -Einstiegspunkt den Port angeben, an den es gebunden ist?

Standardmäßig werden 5000 verwendet.

Beachten Sie, dass diese Frage spezifisch für die neue ASP.NET Core-API (derzeit in 1.0.0-RC2) ist.

118
Drew Noakes

Sie können dafür UseUrls verwenden:

public class Program
{
    public static void Main(string[] args)
    {
        var Host = new WebHostBuilder()
            .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .UseUrls("http://localhost:5001/")
            .Build();

        Host.Run();
    }
}

Alternativ können Sie die Serveradresse über den Konfigurationsstapel konfigurieren. So können Sie die Befehlszeilenargumente verwenden, um die gewünschte Adresse einzugeben:

public class Program
{
    public static void Main(string[] args)
    {
        var configuration = new ConfigurationBuilder()
            .AddCommandLine(args)
            .Build();

        var Host = new WebHostBuilder()
            .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseConfiguration(configuration)
            .UseIISIntegration()
            .UseStartup<Startup>()
            .Build();

        Host.Run();
    }
}

dotnet run --urls=http://localhost:5001/
166
Pinpoint

Folgen Sie der Antwort, um allen Benutzern bei der Integration von VS Docker zu helfen. Ich musste auf Port 8080 umsteigen, um die "flexible" Umgebung in Google Appengine nutzen zu können.

In Ihrer Docker-Datei benötigen Sie Folgendes:

ENV ASPNETCORE_URLS=http://+:8080
EXPOSE 8080

und Sie müssen auch den Port in docker-compose.yml ändern:

    ports:
      - "8080"
42
Casey

Sie können den Abschnitt Turmfalke in die Datei asp.net core 2.1+ appsettings.json einfügen.

  "Kestrel": {
    "EndPoints": {
      "Http": {
        "Url": "http://0.0.0.0:5002"
      }
    }
  },
31
menxin

Alternative Lösung ist die Verwendung eines hosting.json im Stammverzeichnis des Projekts.

{
  "urls": "http://localhost:60000"
}

Und dann in Program.cs

public static void Main(string[] args)
{
    var config = new ConfigurationBuilder()
        .SetBasePath(Directory.GetCurrentDirectory())
        .AddJsonFile("hosting.json", true)
        .Build();

    var Host = new WebHostBuilder()
        .UseKestrel(options => options.AddServerHeader = false)
        .UseConfiguration(config)
        .UseContentRoot(Directory.GetCurrentDirectory())
        .UseIISIntegration()
        .UseStartup<Startup>()
        .Build();

    Host.Run();
}
27
Dennis

Sie können die Hosting-URL angeben, ohne Änderungen an Ihrer App vorzunehmen.

Ein ... kreieren Properties/launchSettings.json Datei in Ihrem Projektverzeichnis und füllen Sie es mit etwas wie diesem:

{
  "profiles": {
    "MyApp1-Dev": {
        "commandName": "Project",
        "environmentVariables": {
            "ASPNETCORE_ENVIRONMENT": "Development"
        },
        "applicationUrl": "http://localhost:5001/"
    }
  }
}

dotnet run Befehl sollte wählen Sie Ihre launchSettings.json -Datei und zeigt sie in der Konsole an:

C:\ProjectPath [master ≡]
λ  dotnet run
Using launch settings from C:\ProjectPath\Properties\launchSettings.json...
Hosting environment: Development
Content root path: C:\ProjectPath
Now listening on: http://localhost:5001
Application started. Press Ctrl+C to shut down. 

Weitere Details: https://docs.Microsoft.com/en-us/aspnet/core/fundamentals/environments

25
Random

Bei Hosting in Docker-Containern (Linux-Version für mich) wird möglicherweise die Meldung "Connection Refused" (Verbindung abgelehnt) angezeigt. In diesem Fall können Sie die IP-Adresse .0.0. verwenden, was "alle IP-Adressen auf diesem Computer" anstelle des Loopbacks localhost bedeutet, um die Portweiterleitung zu korrigieren.

public class Program
{
    public static void Main(string[] args)
    {
        var Host = new WebHostBuilder()
            .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .UseUrls("http://0.0.0.0:5000/")
            .Build();

        Host.Run();
    }
}
10
Remco

Oberhalb von .net core 2.2 unterstützt die Methode Main args mit WebHost.CreateDefaultBuilder (args)

public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>();
}

Sie können Ihr Projekt erstellen und den Befehl bin run wie folgt aufrufen

dotnet <yours>.dll --urls=http://localhost:5001

oder mit Multi-Urls

dotnet <yours>.dll --urls="http://localhost:5001,https://localhost:5002"
3
oudi

Gehen Sie zu properties/launchSettings.json und suchen Sie Ihren App-Namen und unter diesem finden Sie applicationUrl. Du wirst sehen, es läuft localhost: 5000, ändere es nach Belieben. und dann laufen dotnet laufen ...... Hurra

2
Md. Rafee

Alternativ können Sie den Port angeben, indem Sie die App über die Befehlszeile ausführen.

Einfach Befehl ausführen:

dotnet run --server.urls http://localhost:5001

Hinweis: Wobei 5001 der Port ist, auf dem Sie ausgeführt werden möchten.

0
Mwiza