Aracılığıyla paylaş


ConcurrencyLimiterMiddleware kullanımdan kaldırıldı

ConcurrencyLimiterMiddleware ve ilişkili yöntemleri ve türleri eski olarak işaretlendi.

Hız sınırlama özelliklerine ihtiyacınız varsa, .NET 7'de kullanıma sunulan daha yeni ve daha yetenekli hız sınırlama ara yazılımına geçin (örneğin, RateLimiterApplicationBuilderExtensions.UseRateLimiter). .NET 7 hız sınırlama API'sinde eşzamanlılık sınırlayıcısı ve uygulamanıza uygulayabileceğiniz diğer birkaç hız sınırlama algoritması bulunur.

Sürüm kullanıma sunulmuştur

ASP.NET Core 8.0 Önizleme 4

Önceki davranış

Geliştiriciler bağımlılık eklemeye (DI) bir ilke ekleyerek ve ara yazılımı etkinleştirerek eşzamanlılığı denetlemek için kullanabilir ConcurrencyLimiterMiddleware :

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

Yeni davranış

Kodunuzda Etkilenen API'leri kullanırsanız derleme zamanında uyarı CS0618 alırsınız.

Hataya neden olan değişikliğin türü

Bu değişiklik kaynak uyumluluğunu etkiler.

Değişiklik nedeni

ConcurrencyLimiterMiddleware seyrek kullanılır ve belgelenmemiştir. Daha yeni hız sınırlama API'sinin daha kapsamlı işlevleri vardır.

Eski ConcurrencyLimiterMiddlewarekullanıyorsanız, daha yeni hız sınırlayıcı ara yazılıma geçmenizi öneririz. Aşağıda yeni API'nin RateLimiterApplicationBuilderExtensions.UseRateLimiterörnek kullanımı verilmiştir:

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

Etkilenen API’ler

Ayrıca bkz.