2012-02-17 3 views
-2

사이트 오류에 대한 알림을 받고 싶습니다. global.asax를 제외한 애플리케이션의 모든 곳에서 작동하는 똑 바른 코드입니다! 다른 프로젝트에서은 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("[email protected]", "Site Errors"); 
      errorMessage.Subject = "Error in sending overseas user"; 
      errorMessage.CC.Add(new MailAddress("[email protected]", "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에 상자에 논리 것을 시도 그것은 효과가 있었지만 호스트에서는 결코 작동하지 않습니다 !! 이게 날 미치게 해! 전자 메일 논리가 내 상자에서 작동하고, 파일 로깅은 내 상자에서 작동하지만 그 중 어느 것도 프로덕션에서 작동하지 않습니다. 이것은 정말로 이상합니다 ... 어떤 생각?

+3

어떻게 작동하지 않습니까? 예외가 발생합니까? 그렇다면 어떤 예외입니까? 또한 빈'catch' 절은 최악의 관행으로 간주됩니다. 실제로 그것에 대해 뭔가를 할 수 없다면 예외를 잡아 내지 마십시오. –

+0

예외가 발생합니까? –

+0

Throw되는 예외는 무엇입니까? 네트워크 또는 방화벽 문제에서 권한 문제 일 수 있습니다. 시작을 위해 SmtpClient에 올바른 자격 증명을 제공해야합니다 ... http://stackoverflow.com/questions/298363/how-can-i-make-smtp-authenticated-in-c-sharp – Lloyd

답변

2

Elmah을 사용하십시오.

정말 완벽한 솔루션입니다.

관련 문제