Middleware zur Ratenbegrenzung erfordert AddRateLimiter
ASP.NET Core-Middleware zur Ratenbegrenzung wurde um zusätzliche Funktionen erweitert. Die Middleware erfordert jetzt Dienste, die bei AddRateLimiter registriert sind.
Eingeführt in Version
ASP.NET Core 8.0 Preview 5
Vorheriges Verhalten
Bisher konnte die Ratenbegrenzung ohne AddRateLimiter verwendet werden. Die Middleware konnte beispielsweise durch Aufrufen von Configure<RateLimiterOptions>(o => { })
konfiguriert werden:
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();
Neues Verhalten
Wenn AddRateLimiter beim Starten der App nicht aufgerufen wird, löst ASP.NET Core einen informativen Fehler aus:
Die erforderlichen Dienste konnten nicht gefunden werden. Fügen Sie alle erforderlichen Dienste hinzu, indem Sie im Startcode der Anwendung „IServiceCollection.AddRateLimiter“ aufrufen.
Typ des Breaking Changes
Diese Änderung ist eine Verhaltensänderung.
Grund für die Änderung
Für die Middleware zur Ratenbegrenzung sind Dienste erforderlich, die nur durch Aufrufen von AddRateLimiter registriert werden.
Empfohlene Maßnahme
Stellen Sie sicher, dass beim Anwendungsstart UseRateLimiter aufgerufen wird.
Aktualisieren Sie beispielsweise Configure<RateLimiterOptions>(o => { })
, um UseRateLimiter zu verwenden:
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();