レート制限ミドルウェアに 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
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET