Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Error Tracing

  1. #1

    Error Tracing

    Ciao a tutti,
    sto creando la base di un sito in C#, buona parte e` fatta, ora voglio portare a termine un buon 'error handler'.
    Il mio sistema prevede il seguente codice nell''Application_Error' del Global.asax:
    codice:
    Exception ex = Server.GetLastError().GetBaseException();
    string SourcePage = Server.MapPath (Request.FilePath);
    string ErrMessage = ex.Message;
    
    Server.ClearError ();
    Response.Redirect ("error.aspx?s=" + SourcePage + "&e=" + ErrMessage);
    Il mio obiettivo e` di nascondere il tutto al cliente, infatti il redirect diventera` un inserimento in un DB ed il cliente verra` rediretto ad una pagina di errore generico con l'ID dell'errore.
    Ora mi si pone un dubbio: per aumentare la velocita` di correzione del problema, sarebbe utile inserire nel DB la linea dove si e` sollevata l'exception.
    Come trovare questa informazione?

    Potrei leggerla dallo StackTrace contenuta nell'oggetto Exception, ma e` una stringa, dovrei fare un parser per ricavare l'informazione.
    Altrimenti potrei usare StackTrace e StackFrame, solo che ho avuto due problemi: non sono mai riuscito a ricavare la linea dove si e` sollevato l'errore ma solo la linea dove viene dichiarato (se non erro) l'oggetto di tipo StackFrame, in secondo luogo, a quanto ho letto, funziona solo in Debug.

    Qualche suggerimento?

    Grazie anticipatamente,
    Michele.
    Horazon.

  2. #2
    Nessuno ha mai pensato ad un logger di errori?
    Horazon.

  3. #3
    Ti sei risposto da solo.
    Per fare quello che chiedi è necessario compilare l'applicazione in Debug Mode. E questo in termini di prestazioni non è il massimo quando un'applicativo ASP.NET è in produzione.

    Il mio consiglio è questo: l'ErrorHandler a cui hai pensato va benissimo (al max invierei un'email o scriverei in un log gli errori evitando il db) ma prima di tutto la tua applicazione deve essere il più possibile esente da eccezioni.
    Gioca in modo intelligente con i blocchi try..catch e scrivi nel db (o nei log) le eccezioni generate. Considera tutte le altre "straordinarie" e che potrai gestire in maniera più tranquilla ogni qualvolta, ad es., ti arriva un avviso via email (e in questi casi riattiverai la compilazione in Debug Mode per il tempo necessario).


  4. #4
    Mh... Immaginavo fosse possibile solo in debug, vedrò di arrangiarmi con quello che ho

    Grazie!
    Horazon.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.