Il middleware di limitazione della frequenza richiede AddRateLimiter
ASP.NET middleware di limitazione della frequenza di base è stato aggiornato con funzionalità aggiuntive. Il middleware richiede ora servizi registrati con AddRateLimiter.
Versione introdotta
ASP.NET Core 8.0 Preview 5
Comportamento precedente
In precedenza, era possibile usare la limitazione della frequenza senza AddRateLimiter. Ad esempio, il middleware poteva essere configurato chiamando 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();
Nuovo comportamento
Se AddRateLimiter non viene chiamato all'avvio dell'app, ASP.NET Core genera un errore informativo:
Impossibile trovare i servizi necessari. Aggiungere tutti i servizi necessari chiamando "IServiceCollection.AddRateLimiter" nel codice di avvio dell'applicazione.
Tipo di modifica che causa un'interruzione
Questa è una modifica funzionale.
Motivo della modifica
Il middleware di limitazione della frequenza richiede servizi che vengono registrati solo chiamando AddRateLimiter.
Azione consigliata
Assicurarsi che AddRateLimiter venga chiamato all'avvio dell'applicazione.
Ad esempio, aggiornare Configure<RateLimiterOptions>(o => { })
per usare 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();