2010-09-28 7 views
0

Voici mon problème J'ai du code et je l'utilise pour envoyer un e-mail avec les détails de la dernière erreur mais tout ce que je veux, c'est le message d'exception (interne) à afficher l'email avec l'URLFichier global.asax ne donnant pas d'exception Message

Voici mon code

Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs) 

' Get current exception 
    Dim err As System.Exception = Server.GetLastError 

    Dim ErrorDetails As String = err.Exception.Message 

    Dim ErrorURL As String = Request.Url.ToString() 

    ' Send notification e-mail 
    Dim Email As MailMessage = _ 
     New MailMessage("[email protected]", [email protected]") 
    Email.IsBodyHtml = False 
    Email.Subject = "WEB SITE ERROR" 
    Email.Body = ErrorDetails & vbcrlf & vbcrlf & ErrorURL 
    Email.Priority = MailPriority.High 
    Dim sc As SmtpClient = New SmtpClient("localhost") 
    sc.Send(Email) 

End Sub 

Toute aide serait appréciée

Merci

Jamie

Répondre

3

Utilisez err.ToString() - ceci vous donne la trace complète de la fente et les exceptions internes.

Si vous voulez vraiment que le message d'erreur d'exception interne, utilisez err.InnerException.Message

+0

Le err.InnerException.Message ne semble pas montrer quoi que ce soit dans l'e-mail est-ce parce qu'il est nul? Et pourquoi serait-il nul d'une erreur? –

+0

@Jamie Taylor - peut-être parce que vous attrapez une exception primaire et il n'y a pas d'exception interne. C'est pourquoi l'utilisation de 'err.ToString()' est préférable pour obtenir tous les détails. – Oded

+0

Je comprends maintenant - s'il y a une innerexception alors ça passe - je me bats pour comprendre ce qu'est une innereception? –

1
protected void Application_Error(object sender, EventArgs e) 

{ 

MailMessage msg = new MailMessage(); 
HttpContext ctx = HttpContext.Current; 

msg.To.Add(new MailAddress("[email protected]")); 
msg.From = new MailAddress("[email protected]"); 
msg.Subject = "My app had an issue..."; 
msg.Priority = MailPriority.High; 

StringBuilder sb = new StringBuilder(); 
sb.Append(ctx.Request.Url.ToString() + System.Environment.NewLine); 
sb.Append("Source:" + System.Environment.NewLine + ctx.Server.GetLastError().Source.ToString()); 
sb.Append("Message:" + System.Environment.NewLine + ctx.Server.GetLastError().Message.ToString()); 
sb.Append("Stack Trace:" + System.Environment.NewLine + ctx.Server.GetLastError().StackTrace.ToString()); 
msg.Body = sb.ToString(); 

//CONFIGURE SMTP OBJECT 
SmtpClient smtp = new SmtpClient("myhost"); 

//SEND EMAIL 
smtp.Send(msg); 

//REDIRECT USER TO ERROR PAGE 
Server.Transfer("~/ErrorPage.aspx"); 
}