レート制限ミドルウェアに AddRateLimiter が必要になりました

ASP.NET Core レート制限ミドルウェアが追加機能で更新されました。 このミドルウェアでは、AddRateLimiter に登録されたサービスが必要になりました。

導入されたバージョン

ASP.NET Core 8.0 Preview 5

以前の動作

以前は、AddRateLimiter を使用せずにレート制限を使用することができました。 たとえば、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();

新しい動作

アプリの起動時に AddRateLimiter が呼び出されない場合、ASP.NET Core は有益なエラーをスローします。

必要なサービスを見つかりません。 アプリケーションのスタートアップ コードで "IServiceCollection.AddRateLimiter" を呼び出して、必要なすべてのサービスを追加してください。

破壊的変更の種類

この変更は、動作変更です。

変更理由

レート制限ミドルウェアには、AddRateLimiter を呼び出すことによってのみ登録されるサービスが必要です。

AddRateLimiter がアプリケーションの起動時に呼び出されていることを確認します。

たとえば、AddRateLimiter を使用するように Configure<RateLimiterOptions>(o => { }) を更新します。

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

影響を受ける API