Compartir vía


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.

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();

API afectadas