Condividi tramite


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.

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();

API interessate