Delen via


Voor de snelheidsbeperking van middleware is AddRateLimiter vereist

ASP.NET Core rate-limiting middleware is bijgewerkt met extra functionaliteit. Voor de middleware zijn nu services vereist die zijn geregistreerd bij AddRateLimiter.

Versie geïntroduceerd

ASP.NET Core 8.0 Preview 5

Vorig gedrag

Voorheen kon snelheidsbeperking worden gebruikt zonder AddRateLimiter. De middleware kan bijvoorbeeld worden geconfigureerd door het aanroepen van 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();

Nieuw gedrag

Als AddRateLimiter het opstarten van de app niet wordt aangeroepen, genereert ASP.NET Core een informatieve fout:

Kan de vereiste services niet vinden. Voeg alle vereiste services toe door 'IServiceCollection.AddRateLimiter' aan te roepen in de opstartcode van de toepassing.

Type wijziging die fouten veroorzaken

Deze wijziging is een gedragswijziging.

Reden voor wijziging

Voor de snelheidsbeperking van middleware zijn services vereist die alleen zijn geregistreerd door aan te roepen AddRateLimiter.

Zorg ervoor dat deze AddRateLimiter wordt aangeroepen bij het opstarten van de toepassing.

Bijvoorbeeld: bijwerken Configure<RateLimiterOptions>(o => { }) voor gebruik 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();

Betrokken API's