2015-07-22 5 views
1

Я использую ELMAH для моего журнала регистрации проектов ASP.NET MVC, я настроил его так, чтобы он регистрировал исключения в базе данных, но моя проблема заключается в том, что произошло исключение, и пользователь обновляет страницу по любой причине (возможно, думая, что обновляя страницу, страница может стать доступной) при каждом обновлении, одна запись вставляется в базу данных, я боюсь, что это может привести к ее очень большой таблице (я закрыл ELMAH только для сохранения последних 90 дней, но это все равно может стать слишком большим), мне было интересно, есть ли способ ограничить количество занесенных в журнал исключений, входящих в одну и ту же страницу за определенный промежуток времени.Как остановить регистрацию ELMAH с тем же исключением при обновлении?

ответ

1

В конечном итоге то, что я закончил делать, это запрос к базе данных, и если TimeUtc последнего исключения составлял менее 5 минут назад, а его сообщение было таким же, как в настоящее время, исключение, я уволил журнал, вот пошаговое руководство о том, что я сделал:

  1. Сначала установите This package что добавить ELMAH_Errors таблицы и объект для запроса ELMAH_Errors таблицы с помощью EF
  2. чем вы можете использовать структуру сущностей для манипулирования ELMAH_Errors таблицы

в Global.asax добавить этот код:

void ErrorLog_Filtering(object sender, ExceptionFilterEventArgs e) 
    { 
     using (var context = new ElmahContext()) 
     { 
      var lastErr = context.ELMAH_Errors.OrderByDescending(m => m.TimeUtc).Take(1).SingleOrDefault(); 

      if (lastErr != null && 
       (e.Exception.Message == lastErr.Message && lastErr.TimeUtc > DateTime.UtcNow.AddMinutes(-5))) 
      { 
       e.Dismiss(); 
      } 
     } 

Вы также можете добавить этот код для ErrorMail_Filtering, также здесь another approach, но сделать это таким образом, что независимо от того, что не является ошибкой, и где он занесен в журнал регистрации ELMAH в течение определенного периода времени, мой подход не самый лучший, но он все еще проигрывает получение записи при каждом обновлении.

 Смежные вопросы

  • Нет связанных вопросов^_^