1

전역 예외 처리 기술을 구현하여 내 컨트롤러의 모든 동작에서 try/catch 블록을 사용하지 않도록하지만 오버라이드 된 OnException 메서드가 중단되기 전에 응용 프로그램이 충돌합니다. 또는 ErrorHandleAttribute에 도달했습니다.ASP.NET MVC 5의 ErrorHanldeAttribute 또는 OnException 메서드가 예외를 처리하지 않음

[HandleError] 
public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult Test() 
    { 
     throw new Exception("Exception Test"); 
    } 

    protected override void OnException(ExceptionContext filterContext) 
    { 
     if (filterContext == null || filterContext.ExceptionHandled) 
     { 
      return; 
     } 

     var message = filterContext.Exception.Message; 
     filterContext.Result = new HttpStatusCodeResult(HttpStatusCode.BadRequest, message); 
     filterContext.ExceptionHandled = true; 
    } 
} 

하고있는 Web.Config에서 : 여기

는 단순화 된 테스트 코드

<system.web> 
    <customErrors mode="On" defaultRedirect="Error"/> 

나는 '던져'줄에 중단 점을 설정하고 액세스/홈하려고하면/테스트 내 응용 프로그램이 충돌합니다 및 OnException 메서드 및 HandleErrorAttribute 경우에만 이후에 도달합니다.

내가 누락 된 항목이 있습니까?

감사합니다.

+2

관련 : [신비성을 ASP.NET MVC 5 오류 페이지 및 오류 로깅 (https://dusted.codes/demystifying-aspnet-mvc-5-error-pages-and-error-logging) – NightOwl888

+0

@ NightOwl888 훌륭한 기사! 나는 거기에 묘사 된 마지막 네 가지 방법을 구현하려고 시도했다. (처음 두 가지는 처음에 내가 가진 것들 이었지만) 성공하지 못했다. 그 중 하나가 트리거되기 전에 내 응용 프로그램이 중단됩니다. – ceferrari

답변

0

HandleError 필터를 등록해야합니다.

filters.Add(new HandleErrorAttribute{View = "Error"}); 
+0

작동하지 않았습니다. 나는 그 줄을 App_Start/FilterConfig.cs에 넣고 FilterConfig.RegisterGlobalFilters (GlobalFilters.Filters)와 함께 Global.asax에 등록했다. 하지만 내 응용 프로그램은 여전히 ​​충돌합니다. – ceferrari

관련 문제