2013-04-05 19 views
17

Ho questo codice:Global.asax - Application_Error - Come posso ottenere i dati della pagina?

using System.Configuration; 

void Application_Error(object sender, EventArgs e) 
{ 
    Exception ex = Server.GetLastError().GetBaseException(); 

    string ErrorMessage = ex.Message; 
    string StackTrace = ex.StackTrace; 
    string ExceptionType = ex.GetType().FullName; 
    string UserId = Getloggedinuser(); 
    string WebErrorSendEmail = 
     ConfigurationManager.AppSettings["WebErrorSendEmail"]; 

    // save the exception in DB 
    LogStuffInDbAndSendEmailFromDb(); 
} 

Questo è (la maggior parte) il mio codice. In una piccola percentuale di casi, tuttavia, non ho abbastanza informazioni. Non so da quale pagina provenga l'eccezione.

Come posso ottenere qualsiasi tipo di informazione correlata alla pagina da cui è originata l'eccezione?

Di seguito è riportato un esempio del messaggio più breve:

Lunghezza non valida per una base-64 array di caratteri.

a System.Convert.FromBase64String (String s) a System.Web.UI.ObjectStateFormatter.Deserialize (String inputString) a System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize (String serializedState) a System.Web.UI.Util.DeserializeWithAssert (IStateFormatter formattatore, String serializedState) a System.Web.UI.HiddenFieldPageStatePersister.Load()

risposta

23

è possibile ottenere l'URL e la pagina della richiesta corrente così:

void Application_Error(object sender, EventArgs e) 
{ 
    // Code that runs when an unhandled error occurs 
    if (HttpContext.Current != null) 
    { 
     var url = HttpContext.Current.Request.Url; 
     var page = HttpContext.Current.Handler as System.Web.UI.Page; 
    } 
} 
Problemi correlati