共用方式為


速率限制中介軟體需要 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

例如,更新 Configure<RateLimiterOptions>(o => { }) 以使用 AddRateLimiter

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