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