Partilhar via


O middleware de limitação de taxa requer AddRateLimiter

ASP.NET middleware de limitação de taxa Core foi atualizado com funcionalidade extra. O middleware agora requer serviços registrados no AddRateLimiter.

Versão introduzida

ASP.NET Core 8.0 Preview 5

Comportamento anterior

Anteriormente, o limite de taxa podia ser usado sem AddRateLimiter. Por exemplo, o middleware pode ser configurado chamando 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();

Novo comportamento

Se AddRateLimiter não for chamado na inicialização do aplicativo, o ASP.NET Core lançará um erro informativo:

Não foi possível encontrar os serviços necessários. Adicione todos os serviços necessários chamando 'IServiceCollection.AddRateLimiter' no código de inicialização do aplicativo.

Tipo de mudança de rutura

Esta mudança é uma mudança comportamental.

Razão para a alteração

O middleware de limitação de taxa requer serviços que só são registrados por chamada AddRateLimiter.

Certifique-se de que AddRateLimiter é chamado na inicialização do aplicativo.

Por exemplo, atualize 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();

APIs afetadas