사용자 정의 모델 바인더, 검증, 액션 필터, ... 등의
것 또한 모든 곳에서 시도/캐치와 컨트롤러를 오염 을 방지하기 위해 몇 가지 예외 조건을 차단하기위한 허용 할 수 대린 디미트로프의 대답에 협력하기 .
이것이 내가 선호하는 것입니다.
public class ExceptionLoggingFilter : IExceptionFilter
{
private ILogger _logger;
public ExceptionLoggingFilter(ILogger logger)
{
_logger = logger;
}
public void OnException(ExceptionContext context)
{
Exception ex = context.Exception;
if (_logger != null)
{
_logger.log(ex)
}
}
context.ExceptionHandled = true; //see note
}
참고 : 당신은 당신이를 추가 할 수있는 예외를 다시 발생하지 않으려면 다음과 같이 것 IExceptionFilter 할 수 있습니다. 로그 만 기록하고 전달할 다른 필터가있는 경우 해당 행을 제거 할 수 있습니다.
은 다음 Global.aspx에 당신이 할 것 :
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new ExceptionLoggingFilter(new Log4NetLogger()));
}
나를 위해 그것을 쉽게 다른 기능을 분리 할 수 있기 때문에 내가하는 Application_Error
를 만드는 필터를 만드는 선호한다. (예 : 로깅, 응용 프로그램에서 처리 할 수 있는지 확인하는 등)