从ASP.Net(VB.Net)发送包含错误详细信息的电子邮件

从ASP.Net(VB.Net)发送包含错误详细信息的电子邮件,asp.net,vb.net,visual-studio-2010,exception,Asp.net,Vb.net,Visual Studio 2010,Exception,我猜这个问题的答案要么是难以置信的简单,要么就是直截了当的不,但我想我还是要试试看 是否可以添加一个函数,以便在捕获异常时发送电子邮件?例如: Try 'Do Something Catch ex As Exception SendError(ex.Message) Response.Redirect("~/ErrorPage.html") End Try 在这种情况下,SendError函数被设置为一个简单的SMTP处理程序,用于将邮件发送到预定义的电子邮件帐户

我猜这个问题的答案要么是难以置信的简单,要么就是直截了当的不,但我想我还是要试试看

是否可以添加一个函数,以便在捕获异常时发送电子邮件?例如:

Try
     'Do Something
Catch ex As Exception
     SendError(ex.Message)
     Response.Redirect("~/ErrorPage.html")
End Try
在这种情况下,SendError函数被设置为一个简单的SMTP处理程序,用于将邮件发送到预定义的电子邮件帐户。显然,这不起作用。我问这个问题的原因是,如果没有用Try…Catch处理错误,那么它会被记录在事件日志中。这很好,因为这样我就知道什么时候用户输入导致了问题。使用Try…Catch,我无法获得任何错误详细信息,甚至无法在不等待用户呼叫的情况下知道存在问题


阅读这里,显示了对global.asax文件的修改…但我想知道这是否与Try…Catch相关,因为“处理”错误也会停止事件日志写入。

如果SendError方法中没有阻止消息发送的内容,我猜SendMessage方法是异步的,在发送邮件之前返回。当ASP.NET遇到Repsonse.Redirect调用时,它会过早地终止当前请求,而不会等待SendMessage完成其工作


查看是否可以在调用重定向之前等待?

应用程序错误方法将捕获未处理的异常(而不使用try..catch)。如您所见,该示例解释了如何使用System.Diagnostics中的EventLog在事件日志中记录错误

要记录错误并发送电子邮件,请将方法更改为

Sub SendError(ByVal ErrorDescription As String)

    'Create the event log record if it does not exist
    Dim EventLogName As String = "MySample"
    If (Not EventLog.SourceExists(EventLogName)) Then
        EventLog.CreateEventSource(EventLogName, EventLogName)
    End If

    'Add a record to the new event log entry
    Dim Log As New EventLog()
    Log.Source = EventLogName
    Log.WriteEntry(ErrorDescription, EventLogEntryType.Error)

    'Send an email to admin when site wide error occurs
    Dim mail As New MailMessage()
    Dim ErrorMessage = _
       "The error description is as follows : " _
       & ErrorDescription 
    mail.From = "jduffy@takenote.com"
    mail.To = "info@takenote.com"
    mail.Subject = "Error in the Site"
    mail.Priority = MailPriority.High
    mail.BodyFormat = MailFormat.Text
    mail.Body = ErrorMessage
    SmtpMail.SmtpServer = "put.your.SMTP.server.here"
    SmtpMail.Send(mail)

End Sub
附言。
很少有类似的模块可以用于在xml、数据库中记录错误或通过电子邮件发送错误。

它应该可以正常工作。你提供的东西没有问题。也许问题出在SendError上。