Kestrel 서버에서 사용하는 기본 구성 파일은 hosting.json
. 이름은 다른 베타 버전에서 여러 번 변경되었습니다. project.json
다음 "command"
섹션에서 지금 사용하는 경우
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel"
}
그런 다음 명령 줄에서 서버를 시작하는 동안
dnx web
파일 hosting.json
을 읽습니다. 파일
{
"server.urls": "http://0.0.0.0:5000"
}
모든 IP4 주소에서 5000을 수신하도록 서버를 구성합니다. 구성
{
"server.urls": "http://::5000;http://0.0.0.0:5000"
}
IP4 및 IP6 주소 모두에서 5000을 수신하도록 알립니다.
사용 ASPNET_ENV
환경 변수 또는 --config myconfig1.json
(또는 config=myconfig1.json
) 사용으로 대체 구성 파일을 지정할 수 있습니다 . 예를 들어 다음을 사용할 수 있습니다.
SET ASPNET_ENV=Development
hosting.Development.json
특정 구성으로 파일 을 생성 합니다. 또는 다음 project.json
과 함께 사용할 수 있습니다 .
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel"
"webProd": "Microsoft.AspNet.Server.Kestrel --config prod.json"
}
사용법에 따라 서버를 시작하십시오.
dnx webProd
추가로 청취 및 등록 (시작하려면 dnx web
) 을 허용해야 할 수 있음을 추가로 상기시켜야합니다 . 방화벽 및 새 TCP / HTTP 포트 수신의 로컬 보안 때문에 필요합니다. 다음과 같이 모든 사용자 (IPv4 및 IPv6)에 대해 5000 포트를 로컬로 등록하고 수신해야합니다.
netsh http add iplisten ipaddress=0.0.0.0:5000
netsh http add iplisten ipaddress=::5000
netsh http add urlacl url=http://+:5000/ user=\Everyone
보안을 강화하기 위해 위의 구성을 조정하여 최소한의 권한을 부여 할 수 있습니다.
업데이트 : @BlaneBunderson 에게 감사드립니다. 하나는 * 대신 IP 주소 (처럼 사용할 수 있습니다 http://*:5000
에 듣고) 어떤 어떤 인터페이스에서 IP4와 IP6 주소. 하나는 조심해서 사용하지 말아야합니다
http://*:5000;http://::5000
http://::5000;http://*:5000
http://*:5000;http://0.0.0.0:5000
http://*:5000;http://0.0.0.0:5000
IP6 주소 ::
또는 IP4 주소를 0.0.0.0
두 번 등록해야하기 때문입니다 .
발표에 해당
기술적으로 "localhost"가 아닌 호스트 이름이나 유효한 IPv4 또는 IPv6 주소로 인해 Kestrel이 모든 네트워크 인터페이스에 바인딩됩니다.
앞으로 행동이 바뀔 수 있다고 생각합니다. 따라서 나는 사용하는 것이 좋습니다*:5000
모든 IT 주소 등록에는 , 0.0.0.0:5000
및 ::5000
양식 .
업데이트 2 : ASP.NET Core RC2 변경 ( 공지 사항 참조) 는 기본값을로드하는 동작을 ). 하나는 변경할 필요가 Main
에서 설정로드 hosting.json
명령 줄 매개 변수를. 다음은 사용 예입니다.
public static void Main(string[] args)
{
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("hosting.json", optional: true)
.AddEnvironmentVariables(prefix: "ASPNETCORE_")
.AddCommandLine(args)
.Build();
var host = new WebHostBuilder()
.UseUrls("http://*:1000", "https://*:1234", "http://0.0.0.0:5000")
.UseEnvironment("Development")
.UseConfiguration(config)
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
위의 코드 는 기본적으로 기본 포트 5000을 사용하는 대신 기본적으로 사용하는 세 가지 바인딩 ( "http://*:1000"
, "https://*:1234"
) "http://0.0.0.0:5000"
을 사용합니다 http://localhost:5000
. 의 호출을 .UseConfiguration(config)
만든 후 .UseUrls
. 따라서 hosting.json
명령 줄 에서로드 된 구성 이 기본 옵션을 덮어 씁니다. 한 .SetBasePath(Directory.GetCurrentDirectory())
줄을 제거 hosting.json
하면 응용 프로그램 dll이 컴파일되는 동일한 디렉터리 (예 :)에서이 파일이로드됩니다 bin\Debug\netcoreapp1.0
.
다음과 같은 실행을 사용할 수 있습니다.
dotnet.exe run --server.urls=http:
기본 설정을 덮어 쓰려면 UseUrls
) 및 "server.urls"
속성의hosting.json
존재 하는 경우 ) .
같은 방법으로 환경 변수를 설정하여 ULR 설정을 덮어 쓸 수 있습니다.
set ASPNETCORE_SERVER.URLS=http:
다음을 사용하여 응용 프로그램의 기본 시작 dotnet.exe run
http://localhost:12541/
바인딩에 됩니다 .
여기 에서 HTTPS 바인딩 사용 예를 찾을 수 있습니다 .
참고 : ASP.NET의 이후 버전 에서 환경 변수의 이름이에서 ASPNETCORE_SERVER.URLS
로 변경되었습니다 ASPNETCORE_URLS
( 여기 에서 ASP.NET Core 3.1 설명서 참조 ).