Partage via


L’intergiciel de limitation de débit nécessite AddRateLimiter

ASP.NET Core intergiciel de limitation de débit a été mis à jour avec des fonctionnalités supplémentaires. L’intergiciel nécessite désormais des services inscrits auprès de AddRateLimiter.

Version introduite

ASP.NET Core 8.0 Preview 5

Comportement précédent

Auparavant, la limitation du débit pouvait être utilisée sans AddRateLimiter. Par exemple, l’intergiciel pouvait être configuré en appelant Configure<RateLimiterOptions>(o => { }) :

var builder = WebApplication.CreateBuilder(args);
builder.Services.Configure<RateLimiterOptions>(o => o
    .AddFixedWindowLimiter(policyName: "fixed", options =>
    {
        // configuration
    }));

var app = builder.Build();
app.UseRateLimiter();
app.MapGet("/", () => Results.Ok($"Hello world")).RequireRateLimiting("fixed");
app.Run();

Nouveau comportement

Si AddRateLimiter n’est pas appelé au démarrage de l’application, ASP.NET Core génère une erreur informative :

Impossible de trouver les services requis. Ajoutez tous les services requis en appelant « IServiceCollection.AddRateLimiter » dans le code de démarrage de l’application.

Type de changement cassant

Ce changement est un changement de comportement.

Raison du changement

L’intergiciel de limitation de débit nécessite des services qui sont enregistrés uniquement en appelant AddRateLimiter.

Vérifiez que AddRateLimiter est appelée au démarrage de l’application.

Par exemple, mettez à jour Configure<RateLimiterOptions>(o => { }) pour utiliser AddRateLimiter :

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRateLimiter(o => o
    .AddFixedWindowLimiter(policyName: "fixed", options =>
    {
        // configuration
    }));

var app = builder.Build();
app.UseRateLimiter();
app.MapGet("/", () => Results.Ok($"Hello world")).RequireRateLimiting("fixed");
app.Run();

API affectées