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
Migliorare la sicurezza dei prompt con Azure AI Studio
Il nuovo controllo Range di Blazor 9
Gestire gli accessi con Token su Azure Container Registry
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Creare una libreria CSS universale: i bottoni
Sfruttare al massimo i topic space di Event Grid MQTT
.NET Conference Italia 2024
Simulare Azure Cosmos DB in locale con Docker
Effettuare il binding di date in Blazor
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
C# 12: Cosa c'è di nuovo e interessante