速率限制中间件需要 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 会引发信息性错误:
找不到所需的服务。 请通过在应用程序启动代码中调用“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();