Partager via


Utiliser le proxy de développement avec des applications .NET Aspire

.NET Aspire est une pile robuste et prête pour le cloud qui permet de créer des applications observables, prêtes pour la production et distribuées.​ Elle est basée sur .NET et fournit une plateforme moderne, rapide et évolutive pour la création d’applications web.

Pour utiliser le proxy de développement avec votre application .NET Aspire, utilisez le package NuGet DevProxy.Hosting. Le package fournit des extensions Dev Proxy .NET Aspire pour intégrer facilement dev Proxy à votre application .NET Aspire.

Installer le package NuGet des extensions Aspire .NET du Dev Proxy

Pour installer le package NuGet des extensions .NET Aspire proxy dev, exécutez la commande suivante dans le dossier racine de votre application .NET Aspire :

dotnet add package DevProxy.Hosting

À l’aide du package d’extensions .NET Aspire du Proxy Dev, vous pouvez intégrer le Proxy de développement soit depuis l’exécutable installé localement, soit depuis un conteneur Docker.

Intégrer le proxy de développement à partir de l’exécutable installé localement

Si le proxy de développement est installé localement, le moyen le plus pratique de l’intégrer à votre application Aspire .NET consiste à référencer l’exécutable local. L’extrait de code suivant montre comment intégrer le proxy de développement à partir de l’exécutable installé localement avec l’application de démarrage .NET Aspire.

Important

Lorsque vous configurez le proxy de développement pour utiliser l’exécutable local, vérifiez que l’exécutable est disponible sur tous les ordinateurs où vous exécutez votre application. Si vous souhaitez utiliser le proxy de développement dans un environnement conteneurisé, envisagez plutôt d’utiliser le conteneur 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();

Tout d’abord, à l’aide des extensions Dev Proxy .NET Aspire, vous ajoutez un service de proxy de développement à votre application. La AddDevProxyExecutable méthode spécifie le nom de l’exécutable du proxy de développement. À l’aide de la WithConfigFile méthode, vous spécifiez le chemin d’accès au fichier de configuration du proxy de développement. À l’aide de la WithUrlsToWatch méthode, vous spécifiez la liste des URL à surveiller. Dans cet exemple, vous souhaitez que le proxy de développement intercepte les requêtes effectuées par l’application web auprès du service d’API.

Important

Notez que la WithUrlsToWatch méthode accepte une fonction qui retourne une liste d’URL à surveiller. Cela est dû au fait que le point de terminaison du service d’API n’est pas disponible lorsque vous configurez le proxy de développement. Vous ne pouvez donc pas transmettre l’URL directement. Au lieu de cela, vous utilisez une expression lambda qui retourne l’URL du service d’API lorsqu’elle est disponible.

Ensuite, dans l’application web, vous utilisez la HTTPS_PROXY variable d’environnement pour configurer l’application web pour utiliser le proxy de développement. À l’aide de la méthode WaitFor, vous demandez à l'application web d’attendre que le proxy de développement soit disponible avant de commencer.

Intégrer le proxy de développement à partir d’un conteneur Docker

Vous pouvez également intégrer le proxy de développement dans votre application .NET Aspire à partir d’un conteneur Docker. L’utilisation de l’image Docker du proxy de développement est pratique, car .NET Aspire extrait automatiquement l’image si elle n’est pas disponible localement. L’inconvénient est qu’il existe quelques étapes supplémentaires pour configurer le proxy de développement dans votre application.

L’extrait de code suivant montre comment intégrer le proxy de développement à partir d’un conteneur Docker à l’application de démarrage .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();

Les étapes de base sont les mêmes que lors de l’utilisation de l’exécutable installé localement. La principale différence est la façon dont vous spécifiez le fichier de configuration et le certificat pour intercepter le trafic HTTPS.

Lors de l’intégration du proxy de développement à partir d’un conteneur Docker, vous devez monter les dossiers locaux avec le fichier de configuration et le certificat dans le conteneur. Dans cet exemple, dans votre solution .NET Aspire, vous disposez de la structure de dossiers suivante :

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

Le cert dossier contient le certificat PFX (Personal Information Exchange) que le proxy de développement utilise pour intercepter le trafic HTTPS.

Important

Vous devez approuver le certificat dans le cert dossier sur votre ordinateur, ou les demandes adressées au service d’API échouent. En outre, pour que le proxy de développement charge le certificat, il doit être au format PFX, doit être nommé rootCert.pfxet ne doit pas être protégé par un mot de passe.

Le config dossier contient le fichier de configuration du proxy de développement et d’autres fichiers proxy de développement tels que des simulations ou des erreurs.

Étant donné que vous montez les fichiers de certificat et de configuration pour séparer les volumes dans le conteneur, ils doivent être stockés dans des dossiers distincts.

Utiliser le proxy de développement avec l’application de démarrage .NET Aspire

Une fois l’application démarrée, le proxy de développement s’affiche en tant que ressource dans l’application.

Capture d’écran du tableau de bord .NET Aspire montrant les ressources de l’application, notamment le proxy de développement.

Lorsque vous utilisez l’application web afin qu’elle envoie des requêtes au service d’API, le proxy de développement intercepte les requêtes et les gère en fonction de votre configuration. Vous pouvez voir la sortie du proxy de développement dans la section Console du tableau de bord .NET Aspire.

Capture d’écran du tableau de bord .NET Aspire montrant la sortie de la console proxy de développement.