2010-01-05 6 views
3

그래서 우리는 우리가 사용하고있는베이스 컨트롤러를 가지고 있으며 버그 추적 도구에 오류를 기록하는 OnException에 대한 오버라이드를 포함합니다. 그러나 일부 오류가 결코 그것을 만들지 않는 것으로 나타났습니다, 그리고 그것은 어딘지 모르게 응용 프로그램이 자체 오류를 기록 할 것으로 기대하는 것이 어리석은 것인지 궁금합니다. 그 자체로 오류가 발생하면 어떤 오류도 포착되지 않을 수 있습니다 ..? 어느 것이 든 최선의 해결책은 무엇입니까, 아니면 항상 OnException이 발생해야합니까? Windows Server에 도구 대신 오류를 기록해야합니까?OnException 재정의에 의해 잡히지 않은 오류를 잡는 방법?

답변

2

나는 어느 시점에서 트래핑 할 수없는 오류를 본 적이 없다고 생각합니다. 나는 또한 응용 프로그램 수준의 로깅을 가지고 당신처럼 기본 컨트롤러를 구현했습니다.

내베이스 컨트롤러가 로깅을하지 않습니다. 대신 나는 컨트롤러와 액션을 꾸미는 커스텀 액션 필터를 만들었고 모든 로깅을 수행한다.

또한 global.asax에서 약간의 로깅을 수행하는 Application_Error 이벤트에 코드를 추가하고 실제 오류를 처리하는 오류 컨트롤러도 호출합니다.

이 방법으로 도움이되기를 바랍니다. 내가 언급 한 코드 중 하나를 원하면이 대답에 주석을 추가하면됩니다. 그것은 많은 코드도 아닙니다.

2

Controller.OnException 이벤트는 실행중인 Controller 범위에서 발생하는 이벤트 만 catch 할 수 있습니다. http 요청이 컨트롤러에 매핑되기 전에 발생하는 이벤트가 있으며 OnException 이벤트는 이러한 이벤트를 캡처하지 않습니다. 예를 들어 RequestContext를 특정 컨트롤러에 매핑하는 컨트롤러 팩토리가있는 경우 여기서 던져진 예외는 컨트롤러의 범위에 포함되지 않습니다.

global.asax.Application_Error 이벤트에서 "fail safe"예외 처리기를 구현해야합니다.

관련 문제