2013-06-10 2 views
1

MVC가 정규 Asp.Net에서 작동하는 것으로 확인한 코드를 변환하려고합니다. 즉, 예외가 발생할 때마다 로깅 메소드를 호출 할 필요없이 Elmah를 사용하여 처리 된 예외를 기록 할 수 있기를 원합니다. 이 모든것과 MVC를 사용하는 모든 솔루션을 둘러 보았습니다. 여기에 간단하고 우아한 하나를 찾았고, 클라이언트 측 호출에 MVC를 사용하더라도 MVC 프로젝트가 아니기 때문에 작동하지 않거나 뭔가 빠졌습니다. How to get ELMAH to work with ASP.NET MVC [HandleError] attribute?Elmah를 사용하여 IExceptionFilter를 사용하여 처리되지 않은 예외를 잡습니다.

는 Global.asax 파일의 두 번째 코드 블록을 배치 말한다 :에서

그래서 여기에 코드

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()); 
} 

게시물입니다. 이 이벤트는 절대로 나를 부르지 않을 것입니다. 그래서 제가 직접 부름해야하는지 궁금합니다. 그러면 제가 무엇을하고 있는지 궁금합니다. 나는 정기적 인 asp 그물에 상응하는 것이 무엇인지 알고 싶다. 내가 MVC에 대한 참조를 가지고 있기 때문에 나는 MVC에 익숙하지 않다.하지만 MVC dll에 대한 언급은 내가 누군가에게 아이디어가 있습니다.

답변

0

일반 ASP.NET은 페이지를로드하기 위해 파이프 라인이 다르기 때문에 필터는 해당 페이지 요청에 적용되지 않습니다. 그러나 MVC 특정 경로에 대해 실행되며 찾은 솔루션이 실제로 가장 좋습니다. 동일한 구현을 가진 NuGet 패키지도 있습니다.

표준 ELMAH 패키지는 이미 처리되지 않은 모든 예외를 ASP.NET Forms 응용 프로그램에서도 catch해야합니다. 설정을위한 표준 문서를 따르는 것이 좋습니다.