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.
Action recommandée
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();