C# 无法从global.asax发送电子邮件

C# 无法从global.asax发送电子邮件,c#,asp.net,C#,Asp.net,我只想得到站点错误的通知,我有这个简单的代码,除了global.asax之外,它在应用程序中的任何地方都能工作 void Application_Error(object sender, EventArgs e) { UIHelper.SendErrorMessage(Server.GetLastError()); } 另一个项目中的代码: public static void SendErrorMessage(Exception ex) {

我只想得到站点错误的通知,我有这个简单的代码,除了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
            {
            }
        }
更新:我已经编写了将异常写入我网站文件夹中的文件的逻辑,我在我的dev box中尝试了该逻辑,它成功了,但在主机中从未成功!!这简直让我发疯!电子邮件逻辑在我的盒子里工作,文件记录在我的盒子里工作,但它们在生产中都不工作?!这真的很奇怪。。。有什么想法吗?

使用


这确实是一个完整的解决方案。

它怎么不起作用?它会引发异常吗?如果是,有什么例外?此外,空的
catch
子句被认为是最糟糕的做法。除非您确实可以对异常执行某些操作,否则不要捕获异常。它是引发异常还是什么?引发的异常可能是什么,从网络或防火墙问题到权限。首先,您需要向SmtpClient提供正确的凭据。。。忘了提到它在我的dev-box上工作,但在godaddy主机上不工作。除非我写一个文件,否则不能做很多事情。看看有什么例外。你有很多选择。Elmah可以将异常存储在内存中,存储到数据库中,甚至通过电子邮件发送给您。