사용하는 경우 WebHostBuilder
A의 Main
엔트리 포인트, 어떻게 그것을 결합하는 포트를 지정할 수 있습니다?
기본적으로 5000을 사용합니다.
이 질문은 새로운 ASP.NET Core API (현재 1.0.0-RC2)에만 해당됩니다.
사용하는 경우 WebHostBuilder
A의 Main
엔트리 포인트, 어떻게 그것을 결합하는 포트를 지정할 수 있습니다?
기본적으로 5000을 사용합니다.
이 질문은 새로운 ASP.NET Core API (현재 1.0.0-RC2)에만 해당됩니다.
답변:
ASP.NET Core 3.1에는 사용자 지정 포트를 지정하는 4 가지 주요 방법이 있습니다.
--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();
}
UseUrls
ASP.NET 팀이 자체 호스팅 시나리오에 권장하는 접근 방식을 사용하는 것 입니다 (값 자체는 하드 코딩 할 필요는 없습니다). 즉, 구성 작성기를 사용하여 어떻게 할 수 있는지 언급하기 위해 답변을 업데이트했습니다.
using Microsoft.Extensions.Configuration.CommandLine;
Kestrel 섹션을 asp.net core 2.1+ appsettings.json 파일에 삽입 할 수 있습니다.
"Kestrel": {
"EndPoints": {
"Http": {
"Url": "http://0.0.0.0:5002"
}
}
},
dotnet publish
.
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();
}
urls
-고마워 @ManishJain
앱을 변경하지 않고 호스팅 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
[ProjectRoot]/Properties/launchSettings.json
하지만 아름다운 것은 장애없이 작동합니다.
dotnet run
하려면 소스 코드에 액세스해야합니다.
사용하는 경우 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"
도커 컨테이너 (리눅스 버전)에서 호스팅되면 '연결 거부'메시지가 표시 될 수 있습니다. 이 경우 로컬 호스트 루프백 대신 "이 시스템의 모든 IP 주소"를 의미 하는 IP 주소 0.0.0.0 을 사용 하여 포트 전달을 수정할 수 있습니다.
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();
}
}
.Net Core 3.1에서 Microsoft Doc을 따라 가면 매우 간단합니다 : kestrel-aspnetcore-3.1
요약:
아래의 ConfigureServices 섹션을 CreateDefaultBuilder에 추가하십시오 Program.cs
.
// using Microsoft.Extensions.DependencyInjection;
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((context, services) =>
{
services.Configure<KestrelServerOptions>(
context.Configuration.GetSection("Kestrel"));
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
아래 기본 구성을 appsettings.json
파일에 추가 하십시오 (Microsoft 기사의 추가 구성 옵션).
"Kestrel": {
"EndPoints": {
"Http": {
"Url": "http://0.0.0.0:5002"
}
}
}
프로젝트 Publish / Debug / Release 바이너리 폴더에서 CMD 또는 콘솔을 열고 다음을 실행하십시오.
dotnet YourProject.dll
http : // localhost : 5002 에서 사이트 / api를 탐색하십시오 .
Net core 3.1에서 다음을 사용하여 포트 문제를 해결했습니다.
Program.cs에서
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args)
.ConfigureWebHost(x => x.UseUrls("https://localhost:4000", "http://localhost:4001"))
.ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
}
당신은 사용하여 응용 프로그램에 액세스 할 수 있습니다
http://localhost:4000
https://localhost:4001
launchSettings.json
에서 검사하십시오Properties
. 에서 포트를 변경할 수 있습니다launchUrl
.