从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上。