2013-06-10 1 views
1

Я пытаюсь преобразовать код, который я нашел для MVC, чтобы работать в обычном Asp.Net. Короче говоря, я хочу иметь возможность регистрировать обработанные исключения с помощью Elmah без необходимости вызова метода ведения журнала каждый раз, когда возникает исключение. Я просмотрел все это, и все решения, которые я нахожу, используют MVC. Я нашел простой и элегантный здесь, и хотя мое приложение использует MVC для вызовов на стороне клиента, это не полный проект MVC, поэтому я думаю, что это не сработает или я что-то упустил.Использовать Elmah для выхвата необработанных исключений с помощью IExceptionFilter

Так вот код

public class ElmahHandledErrorLoggerFilter : IExceptionFilter 
{ 
    public void OnException (ExceptionContext context) 
    { 
     // Log only handled exceptions, because all other will be caught by ELMAH anyway. 
     if (context.ExceptionHandled) 
      ErrorSignal.FromCurrentContext().Raise(context.Exception); 
    } 
} 

и

public static void RegisterGlobalFilters (GlobalFilterCollection filters) 
{ 
    filters.Add(new ElmahHandledErrorLoggerFilter()); 
    filters.Add(new HandleErrorAttribute()); 
} 

Сообщение от: How to get ELMAH to work with ASP.NET MVC [HandleError] attribute?

Говорит, чтобы поместить второй блок кода в файле global.asax. Событие никогда не вызвали для меня, поэтому мне интересно, нужно ли мне самому называть это, и если я сделаю то, что я перехожу к нему? Я бы предпочел знать, что эквивалент для обычной asp net был бы, поскольку я не знаком с MVC, хотя, поскольку у меня есть ссылка на DLL MVC, я был бы открыт, чтобы попытаться заставить его работать «как есть», если кто-то имеет идеи.

ответ

0

Поскольку обычный ASP.NET имеет другой конвейер для загрузки страниц, фильтр не применяется к этим запросам страницы. Тем не менее, он будет выполняться для определенных маршрутов MVC, и решение, которое вы нашли, действительно лучшее. Существуют также пакеты NuGet, которые имеют одинаковые реализации.

Стандартный пакет ELMAH должен уже улавливать все необработанные исключения, также для приложений ASP.NET Forms. Я рекомендую вам следовать стандартной документации для настройки.