Nello scorso script (https://www.aspitalia.com/script/1463/Implementare-Throttling-ASP.NET-Core.aspx) abbiamo introdotto il rate limiting middleware di ASP.NET Core 7.0, tramite cui possiamo controllare il flusso di richieste pervenute al nostro web server.
Il comportamento di default, nel caso in cui una richiesta venga rigettata, è quello di restituire uno status code 503 - Service Unavailable.
Dal punto di vista semantico, probabilmente non è una risposta corretta, dato che le specifiche HTTP prevedono un codice ad-hoc per questo use case, ossia 429 - Too many requests.
La buona notizia è che possiamo facilmente modificare questo comportamento in fase di registrazione del servizio:
builder.Services.AddRateLimiter(_ =>
{
_.OnRejected = async (context, cancellationToken) =>
{
context.HttpContext.Response.StatusCode = (int)HttpStatusCode.TooManyRequests;
context.HttpContext.Response.ContentType = "application/json";
await context.HttpContext.Response.WriteAsync(JsonSerializer.Serialize(new
{
message = "Too many requests"
}));
};
_.AddFixedWindowLimiter("default", options =>
{
...
});
});Come possiamo vedere, abbiamo intercettato l'evento OnRejected, all'interno del quale abbiamo accesso all'HttpContext della richiesta corrente. A questo punto, non dobbiamo far altro che impostare lo status code desiderato, unitamente - se vogliamo - a un messaggio di errore.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Welcome to Future Dev Day 2026
Usare la parola chiave field per semplificare la scrittura di proprietà in C#
Gestione dei codeowners in GitHub
Supporto semplificato per le left join in Entity Framework 10
Shadow DOM open e closed sulla gestione delle pagine
Creare una chat AI con Angular e React
Stop Building Chatbots. Build a team
Utilizzare le View Transition API di JavaScript
Effettuare chiamate API tramite GitHub App
Utilizzo del persistent state di Blazor nel prerendering
Ricerca delle GitHub issue tramite operatori logici
Breaking the Legacy Barrier: how to Use AI to Modernize Applications
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Accedere a risorse e immagini in Windows Store app di Windows 8
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Permettere il Drag-and-drop solo su zone predefinite con Silverlight 2.0
- Consumare dati binari in realtime lato client con ASP.NET Core SignalR
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Personalizare l'icona e le funzionalità di un sito web per iOS e IE
- Caricamenti veloci da CDN e fallback locale con ASP.NET Core
- Utilizzare dati in formato XML in XAML
- Accedere a dati esposti con WebService con Silverlight 1.0


