.NET .NET Aspire 및 실행 프로필
프로필 시작 기본 사항
템플릿에서 새 .NET 애플리케이션을 만들 때, 개발자는 종종 launchSettings라는 파일이 포함된 Properties
디렉터리를 보게 됩니다.json. 시작 설정 파일에는dotnet
가 실행되기를 원하는 방법을 정의하는 관련된 옵션의 집합입니다.
아래 코드는 launchSettings의 시작 프로필 예제입니다. ASP.NET Core 애플리케이션에 대한json 파일입니다.
{
"$schema": "http://json.schemastore.org/launchsettings.json",
"profiles": {
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": false,
"applicationUrl": "http://localhost:5130",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": false,
"applicationUrl": "https://localhost:7106;http://localhost:5130",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
위에 언급한 launchSettingsjson 파일은 두 개의 시작 프로필,, http
및 https
을 정의합니다. 각각에는 고유한 환경 변수 집합, 시작 URL 및 기타 옵션이 있습니다.
.NET Core 애플리케이션을 시작할 때 개발자는 사용할 시작 프로필을 선택할 수 있습니다.
dotnet run --launch-profile https
시작 프로필을 지정하지 않으면 첫 번째 시작 프로필이 기본적으로 선택됩니다.
--no-launch-profile
옵션을 사용하여 시작 프로필 없이 .NET Core 애플리케이션을 시작할 수 있습니다.
launchSettings.json 파일의 일부 필드는 환경 변수로 변환됩니다. 예를 들어, applicationUrl
필드는 ASP.NET Core가 바인딩할 주소와 포트를 제어하는 ASPNETCORE_URLS
환경 변수로 변환됩니다.
Visual Studio 애플리케이션을 시작할 때 시작 프로필을 선택하면 수동으로 디버깅할 때 구성 시나리오 간에 쉽게 전환할 수 있습니다.
.NET 애플리케이션이 시작 프로필로 시작되면 DOTNET_LAUNCH_PROFILE
이라는 특수 환경 변수가 프로세스를 시작할 때 사용된 시작 프로필의 이름으로 채워집니다.
.NET .NET Aspire 앱 호스트용 프로필 실행
.NET Aspire에서 AppHost는 그저 .NET 애플리케이션일 뿐입니다. 결과적으로 다른 애플리케이션과 마찬가지로 launchSettings.json
파일이 있습니다. 다음은 시작 템플릿(dotnet new aspire-starter
)에서 새 .NET.NET Aspire 프로젝트를 만들 때 생성된 launchSettings.json
파일의 예입니다.
{
"$schema": "https://json.schemastore.org/launchsettings.json",
"profiles": {
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "https://localhost:17134;http://localhost:15170",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"DOTNET_ENVIRONMENT": "Development",
"DOTNET_DASHBOARD_OTLP_ENDPOINT_URL": "https://localhost:21030",
"DOTNET_RESOURCE_SERVICE_ENDPOINT_URL": "https://localhost:22057"
}
},
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "http://localhost:15170",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"DOTNET_ENVIRONMENT": "Development",
"DOTNET_DASHBOARD_OTLP_ENDPOINT_URL": "http://localhost:19240",
"DOTNET_RESOURCE_SERVICE_ENDPOINT_URL": "http://localhost:20154"
}
}
}
}
앱 호스트 구성 옵션에 대한 자세한 내용은 .NET.NET Aspire 앱 호스트 구성참조하세요.
앱 호스트 시작 프로필과 서비스 프로젝트 간의 관계
.NET .NET Aspire 앱 호스트는 여러 서비스 프로젝트의 시작을 조정하는 역할을 담당합니다. 명령줄 또는 Visual Studio(또는 기타 개발 환경)를 통해 앱 호스트를 실행하는 경우 앱 호스트에 대해 시작 프로필이 선택됩니다. 차례로 앱 호스트는 실행 중인 서비스 프로젝트에서 일치하는 시작 프로필을 찾고 이러한 옵션을 사용하여 서비스 프로젝트에 대한 환경 및 기본 네트워킹 구성을 제어합니다.
앱 호스트가 서비스 프로젝트를 시작할 때 --launch-profile
옵션을 사용하여 단순히 서비스 프로젝트를 시작하지는 않습니다. 따라서 서비스 프로젝트에 대한 DOTNET_LAUNCH_PROFILE
환경 변수가 설정되지 않습니다.
.NET
.NET Aspire
ASPNETCORE_URLS
환경 변수(시작 프로필의 applicationUrl
필드에서 파생됨)를 수정하여 다른 포트를 사용하기 때문입니다. 기본적으로 .NET AspireWithReplicas 메서드를 사용하여 애플리케이션의 여러 인스턴스를 허용하도록 ASP.NET Core 애플리케이션 앞에 역방향 프록시를 삽입합니다.
environmentVariables
필드의 옵션과 같은 다른 설정은 수정 없이 애플리케이션으로 전달됩니다.
시작 프로필 선택을 제어하기
앱 호스트와 서비스 프로젝트 간에 시작 프로필 이름을 정렬하여 앱 호스트가 조정하는 모든 프로젝트의 구성 옵션 간에 쉽게 전환할 수 있는 것이 이상적입니다. 그러나 특정 프로젝트에서 사용하는 시작 프로필을 제어하는 것이 좋습니다. AddProject 확장 메서드는 이 작업을 수행하는 메커니즘을 제공합니다.
var builder = DistributedApplication.CreateBuilder(args);
builder.AddProject<Projects.InventoryService>(
"inventoryservice",
launchProfileName: "mylaunchprofile");
앞의 코드는 mylaunchprofile
시작 프로필의 옵션을 사용하여 inventoryservice
리소스(.NET 프로젝트)가 시작되었음을 보여 줍니다. 시작 프로필 우선 순위 논리는 다음과 같습니다.
- 지정한 경우
launchProfileName
인수로 지정된 시작 프로필을 사용합니다. - AppHost와 이름이 같은 시작 프로필을 사용합니다(
DOTNET_LAUNCH_PROFILE
환경 변수를 읽어 결정됨). - launchSettings에서 기본(첫 번째) 시작 프로필을 사용합니다.json.
- 시작 프로필을 사용하지 마세요.
시작 프로필 없이 서비스 프로젝트를 강제로 시작하려면 AddProject 메서드의 launchProfileName
인수를 null로 설정할 수 있습니다.
프로필 및 엔드포인트 실행
앱 호스트에 ASP.NET Core 프로젝트를 추가하면, .NET Aspire에서 launchSettings를 구문 분석하여json 파일에서 적합한 실행 프로필을 선택하고, applicationUrl
필드에 있는 URL을 기반으로 애플리케이션 모델에서 끝점을 자동으로 생성합니다.
WithEndpoint 확장 메서드가 자동으로 삽입되는 엔드포인트를 수정합니다.
var builder = DistributedApplication.CreateBuilder(args);
builder.AddProject<Projects.InventoryService>("inventoryservice")
.WithEndpoint("https", endpoint => endpoint.IsProxied = false);
앞의 코드는 .NET Aspire.NET Core 애플리케이션에 대해 앞에서 배포하는 역방향 프록시를 사용하지 않도록 설정하는 방법을 보여 줍니다. 대신 .NET Core 애플리케이션이 HTTP(S)를 통해 요청에 직접 응답할 수 있도록 합니다.
참고 항목
.NET Aspire