#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 и даже имеют комментарий на этот счет… очевидно, что это связано с одной копией. Конечно, теперь вопрос будет «о чем они думали, когда писали это». Мне нужно взглянуть на это немного ближе.