다음을 통해 공유


속도 제한 미들웨어에는 AddRateLimiter가 필요함

ASP.NET Core 속도 제한 미들웨어가 추가 기능으로 업데이트되었습니다. 이제 미들웨어에는 AddRateLimiter에 등록된 서비스가 필요합니다.

도입된 버전

ASP.NET Core 8.0 미리 보기 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에서 정보 오류가 throw됩니다.

필요한 서비스를 찾을 수 없습니다. 애플리케이션 시작 코드에서 '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