2015-12-29 4 views
0

2 для моих веб-страниц ASP.NET Приложение .NET 4.0. Я использовал Enterpriselibrary для регистрации и отправки ошибок по электронной почте до того, как приложение было обновлено до .NET 4.0, но так как его обновление журнала EnterpriseLibrary прекратило протоколирование, поэтому я решил переключиться на Elmah.Получил несколько ошибок электронной почты Elmah

В части моего web.config файла приложения:

<add name="ErrorHandler" type="myWebApp.ErrorHandlingModule, myWebApp" preCondition="managedHandler" /> 
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" /> 
      <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" /> 
      <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" /> 

Как вы можете видеть, что есть уже Errorhandling модуль там (ErrorHandlingModule), который создает сообщение об ошибке («бывший» объект в следующий код). Первоначально в ErrorHandlingModule:

try 
      { 
       ExceptionPolicy.HandleException(ex, "myWebApp Error Handling"); 
      } 
      catch (Exception exApplicationBlockError) 
      { 
       try 
       { 

        EventLog log = new EventLog("Application"); 
        log.Source = "Application Error"; 
        log.WriteEntry(exApplicationBlockError.ToString(), EventLogEntryType.Error); 
       } 
       catch 
       { 
       } 
      } 

Поскольку я переключаюсь на Elmah:

try 
      { 
       //ExceptionPolicy.HandleException(ex, "myWebApp Error Handling"); 

       Elmah.ErrorSignal.FromCurrentContext().Raise(ex);     
      } 
      catch (Exception exApplicationBlockError) 
      { 
       try 
       { 

        EventLog log = new EventLog("Application"); 
        log.Source = "Application Error"; 
        log.WriteEntry(exApplicationBlockError.ToString(), EventLogEntryType.Error); 
       } 
       catch 
       { 
       } 
      } 

Это работает очень хорошо, но сейчас проблема, если есть какая-либо ошибка, что вызывает 2 ошибок электронной почты: один обычай один , а другой - по умолчанию Elmah; и, конечно же, мне нужен только пользовательский.

Я еще не добавил дополнительный файл Elmah ErrorFilter в программу, но мне нужно иметь специальное исключение в моем письме.

Должен ли я добавить настраиваемый фильтр Elmah для фильтрации ВСЕХ исключений, чтобы Elmah не отправил мне сообщение об ошибке по умолчанию? (? Или любые другие предложения)

также прикрепить Elmah конфигурации в файле web.config, если это любая помощь:

<elmah>   
    <security allowRemoteAccess="false" /> 
    <errorMail from="[email protected]" to="[email protected]" subject="myWebApp error" async="true" /> 
    </elmah> 

Спасибо заранее. Хорошего праздника!

ответ

0

Если вы не хотите, чтобы Elmah отправлял сообщения по электронной почте, не настраивайте его, чтобы сделать это в первую очередь. Удалить конфигурацию модуля:

<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah"> 

и любые другие ErrorMail Elmah связанные электронной конфигурации, такие как

<errorMail from="[email protected]" to="[email protected]" subject="myWebApp error" async="true" /> 
+0

Приносим извинения, но я должен был сказать, что получил два электронных письма Элма: один возник из вызова «Elmah.ErrorSignal.FromCurrentContext(). Raise (ex);» а другой - электронное сообщение об ошибке по умолчанию Elmah. Я хочу, чтобы Эльма послал эмаль, но я хочу только первого. Я не очень хорошо знаком с Элмой, я боюсь. Спасибо – WML

+0

Что значит «пользовательский», а затем в вашем вопросе? – mason

+0

Объект исключения "ex", который содержит пользовательские сообщения – WML

0

Глупый меня, я не нужно включать:. Elmah.ErrorSignal.FromCurrentContext() Raise (ех); Именно поэтому письмо было отправлено дважды. Но спасибо за помощь.