YARP Docsv2.3
Docs/Trafic et fiabilité/Délais d'expiration des requêtes

Délais d'expiration des requêtes

.NET 8 a introduit le middleware Request Timeouts, qui permet de configurer les délais d'expiration des requêtes

Introduction

.NET 8 a introduit le middleware Request Timeouts, qui permet de configurer les délais d'expiration des requêtes à l'échelle globale ou par point de terminaison. Cette fonctionnalité est également disponible dans YARP 2.1 lors de l'exécution sur .NET 8 ou une version ultérieure.

Valeurs par défaut

Les requêtes n'ont aucun délai d'expiration par défaut, à l'exception du délai d'expiration d'activité (Activity Timeout) utilisé pour nettoyer les requêtes inactives. Une politique par défaut spécifiée dans RequestTimeoutOptions s'appliquera également aux requêtes transférées.

Configuration

Les délais d'expiration et les politiques de délai d'expiration peuvent être spécifiés par route via RouteConfig et peuvent être liés depuis les sections Routes du fichier de configuration. Comme pour les autres propriétés de route, cela peut être modifié et rechargé sans redémarrer le proxy. Les noms de politique ne sont pas sensibles à la casse.

Les délais d'expiration sont spécifiés au format TimeSpan (HH:MM:SS). Spécifier à la fois un Timeout et une TimeoutPolicy sur la même route n'est pas valide et entraînera le rejet de la configuration.

Remarque

Les délais d'expiration des requêtes ne s'appliquent pas lorsqu'un débogueur est attaché au processus.

Exemple :

JSON{
   "ReverseProxy": {
      "Routes": {
         "route1" : {
             "ClusterId": "cluster1",
             "TimeoutPolicy": "customPolicy",
             "Match": {
                "Hosts": [ "localhost" ]
             }
         }
         "route2" : {
             "ClusterId": "cluster1",
             "Timeout": "00:01:00",
             "Match": {
                         "Hosts": [ "localhost2" ]
                      }
                   }
      },
      "Clusters": {
                   "cluster1": {
                      "Destinations": {
                         "cluster1/destination1": {
                            "Address": "https://localhost:10001/"
                         }
                      }
                   }
      }
   }
}
Timeout policies and the default policy can be configured in the service collection and the
middleware can be added as follows:
C#   var builder = WebApplication.CreateBuilder(args);
   builder.Services.AddReverseProxy()
          .LoadFromConfig(builder.Configuration.GetSection("ReverseProxy"));
   builder.Services.AddRequestTimeouts(options =>
   {
          options.AddPolicy("customPolicy", TimeSpan.FromSeconds(20));
   });
   var app = builder.Build();
   app.UseRequestTimeouts();
   app.MapReverseProxy();
   app.Run();

Désactiver les délais d'expiration

Spécifier la valeur disable dans le paramètre TimeoutPolicy d'une route signifie que le middleware de délai d'expiration des requêtes n'appliquera aucun délai à cette route.

WebSockets

Les délais d'expiration des requêtes sont désactivés après la prise de contact (handshake) WebSocket initiale.

Remarque

Cet article a été rédigé par l'auteur avec l'aide de l'IA. En savoir plus

Adapté de Microsoft Learn , sous licence CC BY 4.0 .