Подтвердить что ты не робот

Как указать порт, на котором размещено приложение ASP.NET Core?

При использовании WebHostBuilder в начальной точке Main, как я могу указать порт, к которому он привязан?

По умолчанию используется 5000.

Обратите внимание, что этот вопрос специфичен для нового API-интерфейса ASP.NET Core (в настоящее время в 1.0.0-RC2).

4b9b3361

Ответ 1

Вы можете использовать UseUrls для этого:

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();
    }
}

Кроме того, вы можете настроить адрес сервера с помощью стека конфигурации. Вот как вы можете использовать аргументы командной строки для передачи нужного адреса:

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/

Ответ 2

Последующий ответ, чтобы помочь кому-либо сделать это с интеграцией докеров на VS. Мне нужно было перейти на порт 8080 для запуска с использованием "гибкой" среды в Google appengine.

В вашем файле Docker вам понадобится следующее:

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

и вам нужно будет изменить порт в файле docker-compose.yml:

    ports:
      - "8080"

Ответ 3

Вы можете вставить раздел Kestrel в ядро asp.net 2. Файл 1+ appsettings.json.

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

Ответ 4

Альтернативным решением является использование hosting.json в корне проекта.

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

И затем в 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();
}

Ответ 5

Вы можете указать URL хостинга без каких-либо изменений в вашем приложении.

Создайте файл Properties/launchSettings.json в каталоге вашего проекта и заполните его примерно так:

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

dotnet run должна выбрать ваш файл launchSettings.json и отобразить его в консоли:

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. 

Более подробная информация: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments

Ответ 6

При размещении в контейнерах докеров (версия для Linux для меня) вы можете получить сообщение "Отказано в соединении". В этом случае вы можете использовать IP-адрес 0.0.0.0, что означает "все IP-адреса на этом компьютере" вместо loopback localhost, чтобы исправить переадресацию порта.

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();
    }
}

Ответ 7

Выше .net core 2.2 метод Main support спорит с 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>();
}

Вы можете построить свой проект и перейти к команде bin run следующим образом:

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

или с несколькими URL-адресами

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

Ответ 8

Перейдите в properties/launchSettings.json и найдите ваше имя приложения, а затем найдите applicationUrl. вы увидите, что он работает localhost: 5000, измените его на все, что вы хотите. а затем запустить дотнет запустить...... ура

Ответ 9

Кроме того, вы можете указать порт, запустив приложение из командной строки.

Просто запустите команду:

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

Примечание. Где 5001 - это порт, на котором вы хотите работать.