ConcurrencyLimiterMiddleware が廃止されました
ConcurrencyLimiterMiddleware およびその関連するメソッドと型は、廃止としてマークされました。
レート制限機能が必要な場合は、.NET 7 に導入されているより新しく、より能力の高いレート制限ミドルウェア (RateLimiterApplicationBuilderExtensions.UseRateLimiter など) に切り替えてください。 .NET 7 レート制限 API には、コンカレンシー リミッターと、アプリケーションに適用できる他のいくつかのレート制限アルゴリズムが含まれています。
導入されたバージョン
ASP.NET Core 8.0 Preview 4
以前の動作
開発者は、ポリシーを依存関係の挿入 (DI) に追加するとともに、ミドルウェアを有効にすることで、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();
新しい動作
影響を受ける API をコード内で使用する場合、コンパイル時に警告 CS0618
が発生します。
破壊的変更の種類
この変更は、"ソースの互換性" に影響します。
変更理由
ConcurrencyLimiterMiddleware は使用頻度が低く、文書化されていません。 より新しいレート制限 API は、より広範な機能を備えています。
推奨される操作
古い ConcurrencyLimiterMiddleware を使用している場合は、新しいレート制限ミドルウェアの使用をお勧めします。 新しい 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();
影響を受ける API
- Microsoft.AspNetCore.Builder.ConcurrencyLimiterExtensions.UseConcurrencyLimiter(IApplicationBuilder)
- Microsoft.AspNetCore.ConcurrencyLimiter.ConcurrencyLimiterMiddleware
- System.Threading.RateLimiting.ConcurrencyLimiterOptions
関連項目
.NET