Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
.NET Aspire — это облачный стек с четкой архитектурой для создания наблюдаемых, готовых к эксплуатации распределенных приложений. Он построен на основе .NET и предоставляет современную, быструю и масштабируемую платформу для создания веб-приложений.
Чтобы использовать прокси-сервер разработки с приложением .NET Aspire, используйте пакет NuGet DevProxy.Hosting. Пакет предоставляет расширения Dev Proxy .NET Aspire для удобной интеграции Dev Proxy в ваше приложение .NET Aspire.
Установите пакет NuGet с расширениями Dev Proxy .NET Aspire
Чтобы установить пакет Dev Proxy .NET Aspire extensions из NuGet, выполните следующую команду в корневой папке вашего приложения .NET Aspire:
dotnet add package DevProxy.Hosting
Используя пакет расширений .NET Aspire для Dev Proxy, можно интегрировать Dev Proxy с помощью локально установленного исполняемого файла или контейнера Docker.
Интегрировать Dev-прокси с локально установленного исполняемого файла
Если вы установили прокси-сервер разработки локально, самый удобный способ интегрировать его в приложение .NET Aspire — ссылаться на локальный исполняемый файл. В следующем фрагменте кода показано, как интегрировать Dev Proxy из локально установленного исполняемого файла с начальным приложением .NET Aspire.
Это важно
При настройке прокси-сервера разработки для использования локального исполняемого файла убедитесь, что исполняемый файл доступен на всех компьютерах, на которых выполняется приложение. Если вы хотите использовать прокси разработки в контейнерной среде, попробуйте использовать контейнер Docker.
using DevProxy.Hosting;
var builder = DistributedApplication
.CreateBuilder(args);
// Add an API service to the application
var apiService = builder.AddProject<Projects.AspireStarterApp_ApiService>("apiservice")
.WithHttpsHealthCheck("/health");
var devProxy = builder.AddDevProxyExecutable("devproxy")
.WithConfigFile(".devproxy/config/devproxy.json")
.WithUrlsToWatch(() => [$"{apiService.GetEndpoint("https").Url}/*"]);
// Add a web frontend project and configure it to use Dev Proxy
builder.AddProject<Projects.AspireStarterApp_Web>("webfrontend")
.WithExternalHttpEndpoints()
.WithHttpsHealthCheck("/health")
.WithEnvironment("HTTPS_PROXY", devProxy.GetEndpoint(DevProxyResource.ProxyEndpointName))
.WithReference(apiService)
.WaitFor(apiService)
.WaitFor(devProxy);
// Build and run the application
builder.Build().Run();
Во-первых, используя расширения Dev Proxy .NET Aspire, вы добавляете в приложение службу Dev Proxy. Метод AddDevProxyExecutable
задает имя исполняемого файла прокси-сервера Dev.
WithConfigFile
С помощью метода укажите путь к файлу конфигурации прокси-сервера разработки.
WithUrlsToWatch
С помощью метода можно указать список URL-адресов для просмотра. В этом примере требуется, чтобы прокси-сервер разработки перехватывал запросы, которые веб-приложение выполняет в службу API.
Это важно
Обратите внимание, что WithUrlsToWatch
метод принимает функцию, которая возвращает список URL-адресов для просмотра. Это связано с тем, что конечная точка службы API недоступна при настройке прокси-сервера разработки, поэтому вы не можете передать URL-адрес напрямую. Вместо этого используется лямбда-выражение, которое возвращает URL-адрес службы API, когда он доступен.
В веб-приложении вы используете переменную среды HTTPS_PROXY
для настройки веб-приложения на использование Dev Proxy. Используя метод WaitFor
, вы инструктируете веб-приложение ожидать, когда прокси-сервер разработки станет доступным, перед началом работы.
Интеграция прокси-сервера разработки из контейнера Docker
Кроме того, вы можете интегрировать Прокси разработки в приложение .NET Aspire из контейнера Docker. Использование образа Docker для прокси-сервера разработки удобно, так как .NET Aspire автоматически извлекает образ, если он недоступен локально. Недостатком является то, что в приложении есть несколько дополнительных шагов по настройке прокси-сервера разработки.
В следующем фрагменте кода показано, как интегрировать Dev Proxy из контейнера Docker с начальным приложением .NET Aspire.
using DevProxy.Hosting;
var builder = DistributedApplication
.CreateBuilder(args);
// Add an API service to the application
var apiService = builder.AddProject<Projects.AspireStarterApp_ApiService>("apiservice")
.WithHttpsHealthCheck("/health");
// Add Dev Proxy as a container resource
var devProxy = builder.AddDevProxyContainer("devproxy")
// specify the Dev Proxy configuration file; relative to the config folder
.WithConfigFile("./devproxy.json")
// mount the local folder with PFX certificate for intercepting HTTPS traffic
.WithCertFolder(".devproxy/cert")
// mount the local folder with Dev Proxy configuration
.WithConfigFolder(".devproxy/config")
// let Dev Proxy intercept requests to the API service
.WithUrlsToWatch(() => [$"{apiService.GetEndpoint("https").Url}/*"]);
// Add a web frontend project and configure it to use Dev Proxy
builder.AddProject<Projects.AspireStarterApp_Web>("webfrontend")
.WithExternalHttpEndpoints()
.WithHttpsHealthCheck("/health")
// set the HTTPS_PROXY environment variable to the Dev Proxy endpoint
.WithEnvironment("HTTPS_PROXY", devProxy.GetEndpoint(DevProxyResource.ProxyEndpointName))
.WithReference(apiService)
.WaitFor(apiService)
.WaitFor(devProxy);
// Build and run the application
builder.Build().Run();
Основные шаги аналогичны использованию локально установленного исполняемого файла. Основное различие заключается в том, как указать файл конфигурации и сертификат для перехвата трафика HTTPS.
При интеграции прокси-сервера Dev из контейнера Docker необходимо подключить локальные папки с файлом конфигурации и сертификатом в контейнер. В этом примере в решении .NET Aspire у вас есть следующая структура папок:
AspireStarterApp
├── .devproxy
│ ├── cert
│ │ └── rootCert.pfx
│ └── config
│ └── devproxy.json
├── Projects
│ ├── AspireStarterApp_ApiService
│ └── AspireStarterApp_Web
└── AspireStarterApp.sln
Папка cert
содержит сертификат PFX, который прокси-сервер разработки использует для перехвата трафика HTTPS.
Это важно
Необходимо доверять сертификату в папке cert
на компьютере, или запросы к службе API завершаются ошибкой. Кроме того, чтобы прокси-сервер разработки загружал сертификат, он должен быть в формате PFX, должен быть назван rootCert.pfx
и не должен быть защищен паролем.
Папка config
содержит файл конфигурации прокси-сервера разработки и другие файлы прокси-сервера разработки, такие как макеты или ошибки.
Так как вы монтируете сертификаты и файлы конфигурации к отдельным томам в контейнере, они должны храниться в отдельных папках.
Использование прокси-сервера разработки с начальным приложением .NET Aspire
После запуска приложения прокси-сервер разработки отображается как ресурс в приложении.
При использовании веб-приложения таким образом, чтобы он запрашивал службу API, прокси-сервер разработки перехватывает запросы и обрабатывает их в соответствии с конфигурацией. Выходные данные прокси-сервера разработки можно просмотреть в разделе консоли панели мониторинга .NET Aspire.