速率限制中间件需要 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();

受影响的 API