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
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Usare le collection expression per inizializzare una lista di oggetti in C#
Migliorare la sicurezza dei prompt con Azure AI Studio
Code scanning e advanced security con Azure DevOps
Eseguire operazioni sui blob con Azure Storage Actions
Utilizzare Tailwind CSS all'interno di React: primi componenti
Routing statico e PreRendering in una Blazor Web App
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Criptare la comunicazione con mTLS in Azure Container Apps
Sostituire la GitHub Action di login su private registry
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API