El middleware de limitación de velocidad requiere AddRateLimiter
El middleware de limitación de velocidad de ASP.NET Core se ha actualizado con una funcionalidad adicional. El middleware ahora requiere servicios registrados en AddRateLimiter.
Versión introducida
ASP.NET Core 8.0 (versión preliminar 5)
Comportamiento anterior
Anteriormente, se podía usar la limitación de velocidad sin AddRateLimiter. Por ejemplo, el middleware podía configurarse llamando a 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();
Comportamiento nuevo
Si no se llama a AddRateLimiter al inicio de la aplicación, ASP.NET Core produce un error informativo:
No se pueden encontrar los servicios necesarios. Agregue todos los servicios necesarios llamando a "IServiceCollection.AddRateLimiter" en el código de inicio de la aplicación.
Tipo de cambio importante
Este es un cambio de funcionamiento.
Motivo del cambio
El middleware de limitación de velocidad requiere servicios que solo se registran llamando a AddRateLimiter.
Acción recomendada
Asegúrese de que se llama a AddRateLimiter al inicio de la aplicación.
Por ejemplo, actualice Configure<RateLimiterOptions>(o => { })
para usar 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();