Elmah всегда регистрирует два идентичных исключения: есть идеи, почему?

#logging #exception-handling #elmah

#ведение журнала #исключение #elmah

Вопрос:

Я использовал Elmah в ряде проектов, и в каждом из них для каждого исключения генерируются две идентичные записи журнала. Помимо беспорядка и пустой траты места, в остальном все работает нормально.

Кто-нибудь видел это поведение раньше или имеет представление, с чего начать поиск?

РЕДАКТИРОВАТЬ: {из global.asax.cs}

     protected void Application_Error() {
        // Use ELMAH to log the exception
        var exception = Server.GetLastError();
        var context = HttpContext.Current;
        var signal = ErrorSignal.FromContext(context);
        if (signal != null) {
            signal.Raise(exception, context);
        }

        // Show custom error page if necessary
        if (!_showCustomErrorPages) return;
        if (exception is HttpRequestValidationException) {
            DisplayErrorPage("InvalidInput");
            return;
        }

        DisplayErrorPage("Error");
    }
  

это пример кода, который я использовал из проекта «whocanhelpme».

Ответ №1:

Возможно, у вас есть модуль регистрации ошибок ELMAH, зарегистрированный дважды в Web.config ?

Это нормально, когда это происходит один раз в system.webhttpModules и один раз в system.webServermodules , но моей первоначальной мыслью было, что, возможно, вы зарегистрировали это дважды в одном (или более) из этих разделов. Возможно, вы могли бы отредактировать свой вопрос, включив в него содержимое вашего Web.config файла (конечно, удалив любую конфиденциальную информацию, такую как настройки электронной почты или строки подключения)?

Еще одна мысль — есть ли у вас, случайно, Application_OnError обработчик событий в Global.asax ? Если да, делаете ли вы там что-нибудь, что может привести к тому, что ELMAH зарегистрирует ошибку во второй раз?

Комментарии:

1. хммм, если подумать, я использовал пример кода из проекта whocanhelpme как часть реализации elmah, и они просто случайно вводят Application_OnError и даже имеют комментарий на этот счет… очевидно, что это связано с одной копией. Конечно, теперь вопрос будет «о чем они думали, когда писали это». Мне нужно взглянуть на это немного ближе.