MVC, ASP 및 선호하는 로깅 / 예외 처리 프레임 워크가 목표를 아주 잘 처리 할 수 있다고 생각합니다. ELMAH와 Enterprise Library는 모두 사용하기 쉬운 예외 처리 및 로깅 기능을 제공하므로 선호하는.
참고 : 친숙한 오류 페이지를 표시 할 수 없으며 질문에서 제안한 것처럼 HTTP 404 또는 500을 반환하십시오. 친숙한 오류 페이지를 반환하면 브라우저에 반환 된 HTTP 코드는 302입니다.이 오류는 친숙한 오류 페이지로 리디렉션됩니다.
친숙한 오류 페이지
한동안 ASP.net에 포함되어있는 '올드 스타일의 web.config 설정으로 목표를 달성 할 수있을 것 같습니다. 개발시 디버그 정보 표시와 프로덕션 환경에서 친숙한 페이지 표시에 대해 언급했습니다. web.config의 사용자 정의 오류 섹션을 사용하여 디버그 정보를 표시하려면 CustomErrors = "Off"를 설정하십시오. 이것을 읽지 않으면 CustomErrors 속성에 익숙하다고 가정합니다.
http://msdn.microsoft.com/en-us/library/h0hfz6fc.aspx
표시하는 오류보기에 대해 더 세밀한 제어가 필요한 경우 MVC의 HandleError 속성을 사용하십시오. 이런 식으로 각 액션 / 컨트롤러에 대해 다른 오류보기를 선택할 수 있습니다.
http://weblogs.asp.net/scottgu/archive/2008/07/14/asp-net-mvc-preview-4-release-part-1.aspx
예외 로깅
모든 예외에 대해 동일한 방식으로 응답하려는 것처럼 들립니다 ( '오류 기록 및 프로덕션 관리자에게 이메일로 보내기'). 이 경우 가장 간단한 옵션은 코드를 추가하는 것입니다.
Application_Error (객체 발신자, EventArgs e)
당신의 global.asax에서. 여기서 선택한 로깅 프레임 워크로 전달할 수 있습니다.
예외 로깅 / 처리에 대한 제어를 강화하려면 HandleErrorAttribute를 서브 클래 싱하고 재정의 할 수 있습니다.
OnException(System.Web.Mvc.ExceptionContext filterContext)
선택한 로깅 프레임 워크로 전달할 수있는 또 다른 곳입니다.
https://stackoverflow.com/questions/183316/asp-net-mvc-handleerror
이것은 위에서 언급 한 Application_Error 기술보다 더 많은 제어를 제공합니다.
일반적으로 MVC는 오류 처리 방법을 세밀하게 제어 할 수 있습니다. 이 컨트롤이 필요하지 않으면 web.config에서 오류 페이지를 정의하는 것과 같은 작업을 수행하는 ASP.net 방식으로 넘어갈 수 있습니다.