Quando abbiamo un'applicazione in produzione, è molto comodo avere a disposizione un gestore centralizzato degli errori, tramite cui, per esempio, loggare le informazioni necessarie per la diagnostica.
In ASP.NET MVC è sufficiente realizzare un exception filter, ossia una classe che implementi l'interfaccia IExceptionFilter, simile a quella del codice in basso:
public class LogExceptionFilter : IExceptionFilter { public void OnException(ExceptionContext filterContext) { if (filterContext == null || filterContext.Exception == null) { return; } var uri = filterContext.HttpContext.Request.Url.ToString(); var exception = filterContext.Exception.GetBaseException(); Trace.TraceError("Uri: {0} - Error: {1}", uri, exception); } }
Nell'esempio, recuperiamo due informazioni basilari, quali l'URL invocato e l'eccezione stessa, per poi loggarli tramite il TraceListener configurato su web.config. All'interno della classe ExceptionContext abbiamo a disposizione tutte le informazioni necessarie per tracciare l'errore, come il contenuto della eventuale form inviata, l'istanza del controller, i parametri di routing, ecc.
Per attivare questo filtro è sufficiente registrarlo a livello globale sulla classe FilterConfig dell'applicazione:
public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new LogExceptionFilter()); filters.Add(new HandleErrorAttribute()); }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare un numero per gestire la concorrenza ottimistica con SQL Server ed Entity Framework
Ordinare randomicamente una lista in C#
Potenziare la ricerca su Cosmos DB con Full Text Search
Generare una User Delegation SAS in .NET per Azure Blob Storage
Gestione CSS in Blazor con .NET 9
Scrivere selettori CSS più semplici ed efficienti con :is()
Ottimizzare le performance usando Span<T> e il metodo Split
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
Anonimizzare i dati sensibili nei log di Azure Front Door
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web