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.
Rekommenderad åtgärd
Se till att AddRateLimiter anropas vid programstart.
Uppdatera till exempel Configure<RateLimiterOptions>(o => { })
för att använda 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();