Sdílet prostřednictvím


ConcurrencyLimiterMiddleware je zastaralé

ConcurrencyLimiterMiddleware a jeho přidružené metody a typy byly označeny jako zastaralé.

Pokud požadujete možnosti omezování rychlosti, přepněte na novější a více schopný middleware omezování rychlosti, který byl zaveden v .NET 7 (například RateLimiterApplicationBuilderExtensions.UseRateLimiter). Rozhraní API pro omezování rychlosti .NET 7 zahrnuje limitátor souběžnosti a několik dalších algoritmů omezování rychlosti, které můžete použít pro vaši aplikaci.

Zavedená verze

ASP.NET Core 8.0 Preview 4

Předchozí chování

Vývojáři můžou řídit ConcurrencyLimiterMiddleware souběžnost přidáním zásady do injektáže závislostí (DI) a povolením middlewaru:

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddStackPolicy<options => {
    options.MaxConcurrentRequests = 2;
    options.RequestQueueLimit = 25;
    });

var app = builder.Build();
app.UseConcurrencyLimiter();
// Map endpoints.
app.Run();

Nové chování

Pokud ve svém kódu použijete ovlivněná rozhraní API , zobrazí se v době kompilace upozornění CS0618 .

Typ zásadní změny

Tato změna má vliv na kompatibilitu zdroje.

Důvod změny

ConcurrencyLimiterMiddleware je zřídka používaný a nezdokumentovaný. Novější rozhraní API pro omezování rychlosti má rozsáhlejší funkce.

Pokud používáte starší ConcurrencyLimiterMiddleware, doporučujeme přejít na novější middleware s omezením rychlosti. Tady je příklad použití novějšího rozhraní API: RateLimiterApplicationBuilderExtensions.UseRateLimiter

using Microsoft.AspNetCore.RateLimiting;
using System.Threading.RateLimiting;

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.UseRateLimiter(new RateLimiterOptions()
    .AddConcurrencyLimiter("only-one-at-a-time-stacked", (options) =>
    {
        options.PermitLimit = 2;
        options.QueueLimit = 25;
        options.QueueProcessingOrder = QueueProcessingOrder.NewestFirst;
    }));

app.MapGet("/", async () =>
{
    await Task.Delay(10000);
    return "Hello World";
}).RequireRateLimiting("only-one-at-a-time-stacked");

app.Run();

Ovlivněná rozhraní API

Viz také