Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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.
Önerilen eylem
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
- Microsoft.AspNetCore.Builder.ConcurrencyLimiterExtensions.UseConcurrencyLimiter(IApplicationBuilder)
- Microsoft.AspNetCore.ConcurrencyLimiter.ConcurrencyLimiterMiddleware
- System.Threading.RateLimiting.ConcurrencyLimiterOptions