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
Rinnovare il token di una GitHub App durante l'esecuzione di un workflow
Garantire la provenienza e l'integrità degli artefatti prodotti su GitHub
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Collegare applicazioni server e client con .NET Aspire
Utilizzare gRPC su App Service di Azure
Selettore CSS :has() e i suoi casi d'uso avanzati
Migliorare la scalabilità delle Azure Function con il Flex Consumption
Generare la software bill of material (SBOM) in GitHub
Introduzione alle Container Queries
Introduzione ai web component HTML
Ordine e importanza per @layer in CSS
Supportare la sessione affinity di Azure App Service con Application Gateway