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
Effettuare lo stream della risposta in ASP.NET Core tramite IAsyncEnumerable
Eseguire attività pianificate con Azure Container Jobs
Creare un'applicazione React e configurare Tailwind CSS
Sfruttare lo streaming di una chiamata Http da Blazor
Semplificare il deployment di siti statici con Azure Static Web App
Gestire i null nelle reactive form tipizzate di Angular
Creare un webhook in Azure DevOps
Usare il versioning con i controller di ASP.NET Core Web API
Come EF 8 ha ottimizzato le query che usano il metodo Contains
Migrare una service connection a workload identity federation in Azure DevOps
Creare gruppi di client per Event Grid MQTT
Configurare dependabot per aggiornare le dipendenze di terze parti con GitHub Actions
I più letti di oggi
- Utilizzare Docker Compose con Azure App Service
- Utilizzare QuickGrid di Blazor con Entity Framework
- Modernizzare le applicazioni WPF e Windows Forms con Blazor
- ASP 3 per esempi
- annunciato #netstandard 2.1. .NET Core lo supporterà a partire da #netcore3, così come le prossime versione di #xamarin, #mono e #unity.il supporto per #netfx 4.8, invece, non ci sarà. https://aspit.co/bq2