[.net] ASP.NET Core 응용 프로그램이 호스팅되는 포트를 지정하는 방법은 무엇입니까?

사용하는 경우 WebHostBuilderA의 Main엔트리 포인트, 어떻게 그것을 결합하는 포트를 지정할 수 있습니다?

기본적으로 5000을 사용합니다.

이 질문은 새로운 ASP.NET Core API (현재 1.0.0-RC2)에만 해당됩니다.



답변

ASP.NET Core 3.1에는 사용자 지정 포트를 지정하는 4 가지 주요 방법이 있습니다.

  • 와 .NET 응용 프로그램을 시작하여, 명령 줄 인수를 사용 --urls=[url]:
dotnet run --urls=http://localhost:5001/
  • 노드 appsettings.json를 추가 하여 사용 Urls:
{
  "Urls": "http://localhost:5001"
}
  • 와, 환경 변수를 사용하여 ASPNETCORE_URLS=http://localhost:5001/.
  • 사용 UseUrls()당신이 그것을 프로그래밍 일을 선호하는 경우 :
public static class Program
{
    public static void Main(string[] args) =>
        CreateHostBuilder(args).Build().Run();

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(builder =>
            {
                builder.UseStartup<Startup>();
                builder.UseUrls("http://localhost:5001/");
            });
}

또는 일반 호스트 빌더 대신 여전히 웹 호스트 빌더를 사용중인 경우 :

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


답변

Kestrel 섹션을 asp.net core 2.1+ appsettings.json 파일에 삽입 할 수 있습니다.

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


답변

VS 도커 통합 으로이 작업을 수행하는 사람을 돕기 위해 후속 조치를 취하십시오. Google appengine에서 “유연한”환경을 사용하려면 포트 8080으로 변경해야했습니다.

Dockerfile에 다음이 필요합니다.

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

docker-compose.yml에서 포트를 수정해야합니다.

    ports:
      - "8080"


답변

다른 해결책은 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();
}


답변

앱을 변경하지 않고 호스팅 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


답변

사용하는 경우 dotnet run

dotnet run --urls="http://localhost:5001"


답변

.net core 2.2 이상에서 WebHost.CreateDefaultBuilder (args) 메소드 Main 지원 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같은 명령 을 실행할 수 있습니다

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

또는 여러 URL로

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