Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
De relance
Objetivo: Usar Dev Proxy com o Aspire
Tempo: 15 minutos
Plugins: Vários
Pré-requisitos:Configurar Dev Proxy, Aspire
Aspire é uma stack opinativa, preparada para a nuvem, para criar aplicações distribuídas, observáveis e prontas para produção. Ele foi criado com base no .NET e fornece uma plataforma moderna, rápida e escalável para a criação de aplicativos Web.
Para usar Dev Proxy com a sua aplicação Aspire, utilize o pacote DevProxy.Hosting NuGet. O pacote fornece extensões Dev Proxy Aspire para integrar convenientemente Dev Proxy na sua aplicação Aspire.
Instale o pacote NuGet de extensões Aspire Dev Proxy
Para instalar o pacote NuGet das extensões Dev Proxy Aspire, execute o seguinte comando na pasta raiz da sua aplicação Aspire:
dotnet add package DevProxy.Hosting
Usando o pacote de extensões Dev Proxy Aspire, pode integrar o Dev Proxy a partir do executável instalado localmente ou de um contentor Docker.
Integre o Dev Proxy a partir do executável instalado localmente
Se tiver o Proxy de Desenvolvimento instalado localmente, a forma mais conveniente de o integrar na sua aplicação Aspire é consultar o executável local. O seguinte excerto de código mostra como integrar Dev Proxy a partir do executável instalado localmente com a aplicação inicial Aspire.
Importante
Ao configurar o Proxy de Desenvolvimento para usar o executável local, verifique se o executável está disponível em todas as máquinas em que você executa seu aplicativo. Se você quiser usar o Proxy de Desenvolvimento em um ambiente conteinerizado, considere usar o contêiner do 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();
Primeiro, usando as extensões Dev Proxy Aspire, adiciona um serviço Dev Proxy à sua aplicação. O AddDevProxyExecutable método especifica o nome do executável Dev Proxy. Usando o WithConfigFile método, você especifica o caminho para o arquivo de configuração do Dev Proxy. Usando o método WithUrlsToWatch, tu especificas a lista de URLs a serem observadas. Neste exemplo, você deseja que o Dev Proxy intercete solicitações que o aplicativo Web faz ao serviço de API.
Importante
Observe que o método WithUrlsToWatch aceita uma função que retorna uma lista de URLs para monitorizar. Isso ocorre porque o ponto de extremidade do serviço de API não está disponível quando você configura o Proxy de Desenvolvimento, portanto, não é possível passar a URL diretamente. Em vez disso, você usa uma expressão lambda que retorna a URL do serviço de API quando ele está disponível.
Em seguida, na aplicação web, use a variável de ambiente HTTPS_PROXY para configurar a aplicação web para usar o Proxy de Desenvolvimento. Usando o método WaitFor, você instrui a aplicação web a aguardar que o Proxy de Dev esteja disponível antes de iniciar.
Integrar o Dev Proxy a partir de um contêiner do Docker
Em alternativa, podes integrar o Dev Proxy na tua aplicação Aspire a partir de um contentor Docker. Usar a imagem Dev Proxy Docker é conveniente, porque Aspire baixa automaticamente a imagem se não estiver disponível localmente. A desvantagem é que há mais algumas etapas para configurar o Dev Proxy em seu aplicativo.
O seguinte excerto de código mostra como integrar Dev Proxy de um contentor Docker com a aplicação inicial 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();
As etapas básicas são as mesmas que ao usar o executável instalado localmente. A principal diferença é como você especifica o arquivo de configuração e o certificado para intercetar o tráfego HTTPS.
Ao integrar o Dev Proxy a partir de um contêiner do Docker, você precisa montar as pastas locais com o arquivo de configuração e o certificado no contêiner. Neste exemplo, na sua solução Aspire, tem a seguinte estrutura de pastas:
AspireStarterApp
├── .devproxy
│ ├── cert
│ │ └── rootCert.pfx
│ └── config
│ └── devproxy.json
├── Projects
│ ├── AspireStarterApp_ApiService
│ └── AspireStarterApp_Web
└── AspireStarterApp.sln
A cert pasta contém o certificado PFX (Personal Information Exchange) que o Dev Proxy usa para intercetar o tráfego HTTPS.
Importante
Você deve confiar no certificado na cert pasta em sua máquina, ou as solicitações para o serviço de API falharão. Além disso, para que o Dev Proxy carregue o certificado, ele deve estar no formato PFX, deve ser nomeado rootCert.pfxe não deve ser protegido com uma senha.
A config pasta contém o arquivo de configuração do Dev Proxy e outros arquivos do Dev Proxy, como simulações ou erros.
Como você está montando os arquivos de certificado e configuração para separar volumes no contêiner, eles devem ser armazenados em pastas separadas.
Use o Dev Proxy com a aplicação inicial Aspire
Após abrir a aplicação, o Proxy de Desenvolvimento aparece como um recurso na aplicação.
Quando você usa o aplicativo Web para que ele faça solicitações ao serviço de API, o Dev Proxy interceta as solicitações e manipula de acordo com sua configuração. Pode visualizar a saída do Dev Proxy na secção Consola do painel do Aspire.