2

"HandleError"예외 처리를위한 동작 필터를 사용하는 MVC 3 웹 응용 프로그램이 있습니다. 이 액션 필터는 다음과 같이 구현했습니다.MVC HandleError 필터가 예외를 catch하지 않았습니다.

[HandleError] 
public class BaseController : Controller {...} 

내 컨트롤러가 모두 파생 된 기본 클래스입니다. 내 web.config에서 나는 을 가지고 있고 Error.cshtml은 내 공유 폴더 (.cshtml은 Razor를 사용하기 때문에)에 있습니다. 때문에 "customErrors에"의 "처리되지 않은 예외 (YSOD)"하고 내가 기본 ASP.Net을 가지고 모든 것이 잘 작동되었고, 나는 최근에 (내 기능에 의해 포맷) 처리 벌금 예외

를 얻을, 어떻게 든 내가 가지고와 실제 예외에 대한 정보가없는 오류 메시지. 이것은 AJAX 포스트에서 일어난 일입니다. 그러나, 나는 그것을 재현 할 수 없습니다.

어떤 종류의 오류라도이 작업 필터를 벗어날 수 있습니까?

답변

4

어떤 종류의 오류라도이 작업 필터를 벗어날 수 있습니까?

HandleError 필터는 응용 프로그램에서 실행 된 모든 예외를 catch하지 않습니다. MVC 컨텍스트 내에서 액션, 액션 필터 내부에서 발생하는 예외를 캡처 할 수 있습니다. 또한 0 이외의 상태 코드를 갖는 HTTP 예외를 캡처하지 않습니다. MVC 응용 프로그램에서 HandleError 필터에만 의존하는 것은 좋지 않습니다.

당신은 여전히 ​​HandleError에 의해 포착되지 않은 예외에 대한 사용자 지정 오류 페이지를 표시 할 몇 가지 로깅 및 customErrors 섹션을 수행 할 Application_Error 이벤트에 의존해야한다.

나는이 주제에 관해 귀하를 도와 줄 수있는 post 블로그를 작성했습니다.

+0

마크, 죄송합니다. 네, "UnauthorizedAccessException"(아마도 파일 액세스가 아님)과 같은 몇 가지 예외를 보았습니다. 나는 아마도 Application_Error가 그것을 잡을 마지막 단계 일 것이라고 동의한다. 그러나 [HandleError]는 MVC와 비슷합니다. 이러한 예외를 포착 할 수있는이 게시물 (http://stackoverflow.com/questions/183316/asp-net-mvc-handleerror - 세 번째 대답)은 어떻습니까? ELMAH는 로깅에 적합합니다. –

+0

어제 Application_Error 코드를 시도했지만 "UnauthorizedAccessException"을 처리 할 수 ​​없습니다. 나중에 코드를 controller.ViewData.Model = new HandleErrorInfo (예 : currentController, currentAction)로 변경했습니다. - 잘됐다! 나는 이것이 [HandleError]와 공존하는지 알고 싶었거나 Application_error 후에 더 이상 [HandleError]가 필요 없다고 말하고 싶습니다. –

+0

Controller.ViewData.Model = new HandleErrorInfo() – VJAI

관련 문제