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.
Aanbevolen actie
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();