【发布时间】:2012-03-08 12:17:41
【问题描述】:
我想简单地收到有关站点错误的通知,并且我有这个直接的代码,它在应用程序中的任何地方都可以工作,除了 global.asax!
void Application_Error(object sender, EventArgs e)
{
UIHelper.SendErrorMessage(Server.GetLastError());
}
另一个项目中的代码:
public static void SendErrorMessage(Exception ex)
{
MailMessage errorMessage = new MailMessage();
errorMessage.From = new MailAddress("xxxxxx@gmail.com", "Site Errors");
errorMessage.Subject = "Error in sending overseas user";
errorMessage.CC.Add(new MailAddress("xxxxxxx@gmail.com", "xxxxx")); //test only
StringBuilder sb = new StringBuilder();
sb.AppendFormat("Source:{0}\n", ex.Source);
sb.AppendFormat("Message:{0}\n", ex.Message);
sb.AppendFormat("Stack Trace:{0}\n", ex.StackTrace);
sb.AppendFormat("Inner Exception:{0}\n", ex.InnerException == null ? string.Empty : ex.InnerException.Message);
errorMessage.Body = sb.ToString();
errorMessage.IsBodyHtml = false;
var smtp = new SmtpClient();
try
{
smtp.Send(errorMessage);
}
catch
{
}
}
更新:我已经编写了将异常写入我网站文件夹中的文件的逻辑,我在我的开发框中尝试了该逻辑并且它有效,但它在主机中无法正常工作!这让我发疯!电子邮件逻辑在我的盒子里工作,文件记录在我的盒子里工作,但它们都不能在生产中工作?!这真的很奇怪......有什么想法吗?
【问题讨论】:
-
怎么不行?它会抛出异常吗?如果有,有什么例外?此外,空的
catch子句被认为是最糟糕的做法。不要捕捉异常,除非你真的能做些什么。 -
是抛出异常还是什么?
-
抛出了什么异常,可能是网络或防火墙问题,也可能是权限问题。首先,您需要向 SmtpClient 提供正确的凭据...stackoverflow.com/questions/298363/…
-
忘了提到它可以在我的开发盒上运行,但它不适用于 Godaddy 托管。除非我写入文件,否则不能做太多事情。看看有什么异常。
-
你有很多选择。 Elmah 可以将异常存储在内存中、数据库中,甚至可以通过电子邮件发送给您。