Udostępnij za pośrednictwem


Oprogramowanie pośredniczące ograniczające szybkość wymaga dodatku AddRateLimiter

ASP.NET podstawowe oprogramowanie pośredniczące ograniczające szybkość zostało zaktualizowane o dodatkowe funkcje. Oprogramowanie pośredniczące wymaga teraz usług zarejestrowanych w programie AddRateLimiter.

Wprowadzona wersja

ASP.NET Core 8.0 (wersja zapoznawcza 5)

Poprzednie zachowanie

Wcześniej można było używać ograniczania szybkości bez AddRateLimiterfunkcji . Na przykład oprogramowanie pośredniczące można skonfigurować przez wywołanie metody 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();

Nowe zachowanie

Jeśli AddRateLimiter nie jest wywoływana podczas uruchamiania aplikacji, ASP.NET Core zgłasza błąd informacyjny:

Nie można odnaleźć wymaganych usług. Dodaj wszystkie wymagane usługi, wywołując element "IServiceCollection.AddRateLimiter" w kodzie uruchamiania aplikacji.

Typ zmiany powodującej niezgodność

Ta zmiana jest zmianą behawioralną.

Przyczyna wprowadzenia zmiany

Oprogramowanie pośredniczące ograniczające szybkość wymaga usług zarejestrowanych tylko przez wywołanie metody AddRateLimiter.

Upewnij się, że AddRateLimiter jest wywoływana podczas uruchamiania aplikacji.

Na przykład zaktualizuj Configure<RateLimiterOptions>(o => { }) polecenie , aby użyć polecenia 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();

Dotyczy interfejsów API