Dela via


Använda Dev Proxy med .NET Aspire-program

.NET Aspire är en åsiktsbaserad, molnklar stack för att skapa observerbara, produktionsklara, distribuerade program. Den bygger på .NET och ger en modern, snabb och skalbar plattform för att skapa webbprogram.

Om du vill använda Dev Proxy med ditt .NET Aspire-program använder du NuGet-paketet DevProxy.Hosting. Paketet tillhandahåller Dev Proxy .NET Aspire-tillägg för att enkelt integrera Dev Proxy i ditt .NET Aspire-program.

Installera NuGet-paketet för Dev Proxy .NET Aspire-tillägg

Om du vill installera NuGet-paketet för Dev Proxy .NET Aspire-tillägg kör du följande kommando i rotmappen för .NET Aspire-programmet:

dotnet add package DevProxy.Hosting

Med hjälp av Dev Proxy .NET Aspire-tilläggspaketet kan du integrera Dev Proxy från den lokalt installerade körbara filen eller från en Docker-container.

Integrera Dev Proxy från den lokalt installerade körbara filen

Om du har Dev Proxy installerat lokalt är det enklaste sättet att integrera den i .NET Aspire-programmet att referera till den lokala körbara filen. Följande kodfragment visar hur du integrerar Dev Proxy från den lokalt installerade körbara filen med .NET Aspire-startprogrammet.

Viktigt!

När du konfigurerar Dev Proxy för att använda den lokala körbara filen kontrollerar du att den körbara filen är tillgänglig på alla datorer där du kör programmet. Om du vill använda Dev Proxy i en containerbaserad miljö bör du överväga att använda Docker-containern i stället.

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();

Först, med hjälp av Dev Proxy .NET Aspire-tillägg, lägger du till en Dev Proxy-tjänst i ditt program. Metoden AddDevProxyExecutable anger namnet på den körbara Dev Proxy-filen. Med hjälp av WithConfigFile metoden anger du sökvägen till dev proxy-konfigurationsfilen. Med hjälp WithUrlsToWatch av metoden anger du listan över URL:er att titta på. I det här exemplet vill du att Dev Proxy ska avlyssna begäranden som webbappen gör till API-tjänsten.

Viktigt!

Observera att WithUrlsToWatch metoden accepterar en funktion som returnerar en lista med URL:er att titta på. Det beror på att API-tjänstslutpunkten inte är tillgänglig när du konfigurerar Dev Proxy, så du kan inte skicka URL:en direkt. I stället använder du ett lambda-uttryck som returnerar URL:en för API-tjänsten när den är tillgänglig.

I webbappen använder HTTPS_PROXY du sedan miljövariabeln för att konfigurera webbappen så att den använder Dev Proxy. Med hjälp av WaitFor metoden instruerar du webbappen att vänta tills Dev Proxy är tillgängligt innan du börjar.

Integrera Dev Proxy från en Docker-container

Du kan också integrera Dev Proxy i ditt .NET Aspire-program från en Docker-container. Det är praktiskt att använda Docker-avbildningen för Dev Proxy eftersom .NET Aspire automatiskt hämtar avbildningen om den inte är tillgänglig lokalt. Nackdelen är att det finns några fler steg för att konfigurera Dev Proxy i ditt program.

Följande kodfragment visar hur du integrerar Dev Proxy från en Docker-container med .NET Aspire-startprogrammet.

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();

De grundläggande stegen är desamma som när du använder den lokalt installerade körbara filen. Den största skillnaden är hur du anger konfigurationsfilen och certifikatet för att fånga upp HTTPS-trafik.

När du integrerar Dev Proxy från en Docker-container måste du montera de lokala mapparna med konfigurationsfilen och certifikatet i containern. I det här exemplet har du följande mappstruktur i .NET Aspire-lösningen:

AspireStarterApp
├── .devproxy
│   ├── cert
│   │   └── rootCert.pfx
│   └── config
│       └── devproxy.json
├── Projects
│   ├── AspireStarterApp_ApiService
│   └── AspireStarterApp_Web
└── AspireStarterApp.sln

Mappen cert innehåller PFX-certifikatet (Personal Information Exchange) som Dev Proxy använder för att fånga upp HTTPS-trafik.

Viktigt!

Du måste lita på certifikatet cert i mappen på datorn, annars misslyckas begäranden till API-tjänsten. För att Dev Proxy ska kunna läsa in certifikatet måste det också vara i PFX-format, måste ha namnet rootCert.pfx, och får inte skyddas med ett lösenord.

Mappen config innehåller dev proxy-konfigurationsfilen och andra Dev Proxy-filer, till exempel mocks eller errors.

Eftersom du monterar certifikat- och konfigurationsfilerna för att separera volymer i containern måste de lagras i separata mappar.

Använda Dev Proxy med .NET Aspire-startprogrammet

När du har startat programmet visas Dev Proxy som en resurs i programmet.

Skärmbild av instrumentpanelen .NET Aspire som visar programresurser, inklusive Dev Proxy.

När du använder webbprogrammet så att det skickar begäranden till API-tjänsten, fångar Dev Proxy upp begäranden och hanterar enligt din konfiguration. Du kan se Dev Proxy-utdata i avsnittet Konsol på instrumentpanelen .NET Aspire.

Skärmbild av instrumentpanelen .NET Aspire som visar utdata från Dev Proxy-konsolen.