.NET .NET Aspire и профили запуска
.NET .NET Aspire использует профили запуска , определенные как в проектах узла приложений, так и в проектах служб, чтобы упростить процесс настройки нескольких аспектов отладки и публикации для распределенных приложений на основе .NET.NET Aspire.
Основы профиля запуска
При создании нового приложения .NET из шаблона разработчики часто видят каталог Properties
, содержащий файл с именем launchSettings.json. Файл параметров запуска содержит список профилей запуска . Каждый профиль запуска — это набор связанных параметров, определяющий, как вы хотите запустить приложение с помощью dotnet
.
Приведенный ниже код является примером профилей запуска в launchSettings.json файл для приложения ASP.NET Core.
{
"$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"
}
}
}
}
Файл launchSettings.json, упомянутый выше, определяет два профиля запуска: , http
и https
. Каждый из них имеет собственный набор переменных среды, URL-адреса запуска и другие параметры. При запуске приложения .NET Core разработчики могут выбрать, какой профиль запуска следует использовать.
dotnet run --launch-profile https
Если профиль запуска не указан, по умолчанию выбран первый профиль запуска. Можно запустить приложение .NET Core без профиля запуска с помощью параметра --no-launch-profile
. Некоторые поля из файла launchSettings.json преобразуются в переменные среды. Например, поле applicationUrl
преобразуется в переменную среды ASPNETCORE_URLS
, которая управляет адресом и портом, к которым привязывается ASP.NET Core.
В Visual Studio при запуске приложения можно выбрать профиль запуска, что упрощает переключение между сценариями конфигурации при отладке вручную.
При запуске приложения .NET с использованием профиля запуска специальная переменная среды под названием DOTNET_LAUNCH_PROFILE
заполняется именем данного профиля запуска.
Профили запуска для хоста приложения .NET.NET Aspire
В .NET Aspireприложение AppHost — это просто приложение .NET. В результате он имеет файл launchSettings.json
так же, как и любое другое приложение. Ниже приведен пример файла launchSettings.json
, созданного при создании нового проекта .NET.NET Aspire из начального шаблона (dotnet new aspire-starter
).
{
"$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 имеют очень похожий набор профилей запуска для обычного приложения ASP.NET Core. При запуске проекта приложения .NET.NET Aspire запускается DistributedApplication и размещается веб-server, который используется панелью мониторинга .NET Aspire для получения сведений о ресурсах, управляемых .NET Aspire.
Сведения о вариантах конфигурации узла приложения см. в разделе .NET.NET Aspireконфигурации узла приложения.
Связь между профилями запуска хоста приложения и проектами служб
В .NET.NET Aspire хост приложения отвечает за координацию запуска нескольких проектов сервисов. При запуске узла приложения через командную строку или из Visual Studio (или другой среды разработки) для узла приложения выбирается профиль запуска. В свою очередь, хост приложения попытается найти соответствующий профиль запуска в служебных проектах, которые он запускает, и использовать эти параметры для управления средой и стандартными настройками сети для служебного проекта.
Когда узел приложения запускает проект службы, он не просто запускает проект службы с помощью параметра --launch-profile
. Таким образом, для проектов служб не будет установлена переменная окружения DOTNET_LAUNCH_PROFILE
. Это связано с тем, что .NET.NET Aspire изменяет переменную среды ASPNETCORE_URLS
(производную от поля applicationUrl
в профиле запуска) для использования другого порта. По умолчанию .NET Aspire размещает обратный прокси-сервер перед приложением ASP.NET Core, чтобы обеспечить возможность нескольких экземпляров приложения с помощью метода WithReplicas.
Другие параметры, такие как параметры из поля environmentVariables
, передаются в приложение без изменений.
Управление выбором профиля запуска
В идеале можно выровнять имена профилей запуска между узлом приложения и проектами службы, чтобы упростить переключение между параметрами конфигурации для всех проектов, координируемых узлом приложения одновременно. Однако может потребоваться управлять профилем запуска, который использует конкретный проект. Метод расширения AddProject предоставляет механизм для этого.
var builder = DistributedApplication.CreateBuilder(args);
builder.AddProject<Projects.InventoryService>(
"inventoryservice",
launchProfileName: "mylaunchprofile");
В приведенном выше коде показано, что ресурс inventoryservice
(проект .NET) запускается с помощью параметров из профиля запуска mylaunchprofile
. Логика приоритета профиля запуска выглядит следующим образом:
- Используйте указанный в аргументе
launchProfileName
профиль запуска, если это предусмотрено. - Используйте профиль запуска с тем же именем, что и AppHost (определяется чтением переменной среды
DOTNET_LAUNCH_PROFILE
). - Используйте профиль запуска по умолчанию (первый) в launchSettings.json.
- Не используйте профиль запуска.
Чтобы принудительно запустить проект службы без профиля запуска, аргумент launchProfileName
в методе AddProject можно задать значение NULL.
Запуск профилей и конечных точек
При добавлении проекта ASP.NET Core в узел приложения .NET Aspire анализируется файл launchSettings,json, выбор соответствующего профиля запуска и автоматическое создание конечных точек в модели приложения на основе URL-адресов, присутствующих в поле applicationUrl
. Чтобы изменить конечные точки, которые автоматически внедряются методом расширения 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.NET Aspire можно узнать в .NET.NET Aspire обзоре внутреннего контура сети.
См. также
.NET Aspire