Share via


Hastighetsbegränsning av mellanprogram kräver AddRateLimiter

ASP.NET Core rate-limiting middleware har uppdaterats med extra funktioner. Mellanprogrammet kräver nu tjänster som registrerats med AddRateLimiter.

Version introducerad

ASP.NET Core 8.0 Förhandsversion 5

Tidigare beteende

Tidigare kunde hastighetsbegränsning användas utan AddRateLimiter. Till exempel kan mellanprogrammet konfigureras genom att anropa 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();

Nytt beteende

Om AddRateLimiter det inte anropas vid appstart utlöser ASP.NET Core ett informativt fel:

Det går inte att hitta de tjänster som krävs. Lägg till alla nödvändiga tjänster genom att anropa "IServiceCollection.AddRateLimiter" i programmets startkod.

Typ av icke-bakåtkompatibel ändring

Den här ändringen är en beteendeförändring.

Orsak till ändringen

Hastighetsbegränsning av mellanprogram kräver tjänster som endast registreras genom att anropa AddRateLimiter.

Se till att UseRateLimiter anropas vid programstart.

Uppdatera till exempel Configure<RateLimiterOptions>(o => { }) för att använda UseRateLimiter:

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

Berörda API:er