2012-02-08 6 views
1

MVC3 애플리케이션에는 컨트롤러와 액션이 많이 있습니다. 때때로 액션을 실행하는 동안 예외가 발생합니다. 그것을 기록하고 예외를 MVC에서 처리하도록하고 싶습니다. 이 의사 같은MVC에서 컨트롤러 액션을 호출하는 방법은 무엇입니까?

뭔가 :

try { 
    MvcInvokeControllerAction(controller, action, params); 
} catch(Exception e) { 
    trace("Error while invoking " + controller + "-" + 
     action + " with " + params + " details: " + getDetails(e)); 
    throw; 
} 

내가 원하는 것은이 처음 MVC에 의해 처리되기 전에 때때로 MVC가의 발로하는 것은 또 다른 예외가 발생하기 때문에 예외를 잡을 수있을 것입니다 내가 Application_Error()에서 후자를보고 최초의 예외는 많이 있습니다.

어떻게 이러한 후킹을 할 수 있습니까?

답변

1

Basecontrollor에서 OnException Method을 무시할 수 있습니다.

이것은 Controllers Actions의 모든 예외에 대한 catch 블록입니다. Basecontrollor

protected override void OnException(ExceptionContext filterContext) 
{ 
} 

예에서 불과 Exetnd 모든 Controllors

public class BaseController : Controller 
{ 

    protected override void OnException(ExceptionContext filterContext) 
    { 
     base.OnException(filterContext); 
     // Handle error here 
    } 
} 


public class TestController : BaseController 
{ 
    public ActionResult Index() 
    { 
     // If any exceptions then will be caught by 
     // BaseController OnException method 
    } 
} 
+0

어떻게 예외가 전파 내버려합니까? 방금 OnException()을 호출합니까? – sharptooth

+0

예제를 참조하십시오. OnException을 호출 할 필요가 없습니다. MVc는 Controllor 액션의 오류를 자동으로 OnException으로 호출합니다. – swapneel

관련 문제