Я использую ELMAH для регистрации ошибок, и если ошибка возникает во время частичной обратной передачи (из обработчика событий элемента управления, помещенного в панель обновления), она регистрирует ошибки дважды. Я НЕ использую модуль «MsAjaxDeltaErrorLog», а вместо этого программно регистрирую ошибки из обработчика событий «AsyncPostBackError» элемента управления ScriptManager. Я делаю это, чтобы избежать перенаправления на общую страницу для ошибок, произошедших во время частичной обратной передачи. Я отключил перенаправление в web.config. вот код, который регистрирует исключение
protected void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)
{
HttpContext.Current.Items["AjaxError"] = "Ajax";
ErrorSignal.FromCurrentContext().Raise(e.Exception,HttpContext.Current);
}
and in Global.asax, I am redirecting manually
protected void ErrorLog_Logged(object sender, ErrorLoggedEventArgs e)
{
if (!HttpContext.Current.Items.Contains("AjaxError"))
{
var pageName = e.Entry.Error.StatusCode == 404 ? "FileNotFoundPage" : "GenericErrorPage";
var redirectPage = ConfigurationManager.AppSettings[pageName];
Response.Redirect(String.Format("{0}?ExceptionId={1}&ExceptionMessage={2}", redirectPage, Server.UrlEncode(e.Entry.Id),
Server.UrlEncode(e.Entry.Error.Message)));
}
}