Share via


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.

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

Betroffene APIs