Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
ConcurrencyLimiterMiddleware et ses méthodes et types associés ont été marqués comme obsolètes.
Si vous avez besoin de fonctionnalités de limitation de débit, basculez vers le middleware de limitation de débit plus récent et plus capable qui a été introduit dans .NET 7 (par exemple, RateLimiterApplicationBuilderExtensions.UseRateLimiter). L’API de limitation de débit .NET 7 inclut un limiteur d’accès concurrentiel et plusieurs autres algorithmes de limitation de débit que vous pouvez appliquer à votre application.
Version introduite
ASP.NET Core 8.0 Preview 4
Comportement précédent
Les développeurs peuvent utiliser ConcurrencyLimiterMiddleware pour contrôler la concurrence en ajoutant une stratégie à l’injection de dépendances (DI) et en activant l’intergiciel :
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddStackPolicy<options => {
options.MaxConcurrentRequests = 2;
options.RequestQueueLimit = 25;
});
var app = builder.Build();
app.UseConcurrencyLimiter();
// Map endpoints.
app.Run();
Nouveau comportement
Si vous utilisez les API affectées dans votre code, vous recevez un avertissement CS0618 au moment de la compilation.
Type de changement cassant
Cette modification affecte la compatibilité de la source.
Raison de la modification
ConcurrencyLimiterMiddleware est rarement utilisé et non documenté. L’API de limitation de débit plus récente offre des fonctionnalités plus étendues.
Action recommandée
Si vous utilisez l’ancien ConcurrencyLimiterMiddleware, nous vous recommandons de passer à l’intergiciel de limitation de débit plus récent. Voici un exemple d’utilisation de l’API plus récente : RateLimiterApplicationBuilderExtensions.UseRateLimiter
using Microsoft.AspNetCore.RateLimiting;
using System.Threading.RateLimiting;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.UseRateLimiter(new RateLimiterOptions()
.AddConcurrencyLimiter("only-one-at-a-time-stacked", (options) =>
{
options.PermitLimit = 2;
options.QueueLimit = 25;
options.QueueProcessingOrder = QueueProcessingOrder.NewestFirst;
}));
app.MapGet("/", async () =>
{
await Task.Delay(10000);
return "Hello World";
}).RequireRateLimiting("only-one-at-a-time-stacked");
app.Run();
API affectées
- Microsoft.AspNetCore.Builder.ConcurrencyLimiterExtensions.UseConcurrencyLimiter(IApplicationBuilder)
- Microsoft.AspNetCore.ConcurrencyLimiter.ConcurrencyLimiterMiddleware
- System.Threading.RateLimiting.ConcurrencyLimiterOptions