2010-08-06 2 views
7

컨트롤러의 OnException 메서드에 몇 가지 특별한 오류 처리 논리를 넣으려고하는 MVC.NET 2.0 프로젝트에서 작업하고 있습니다. 기본적으로 나는 처리되지 않은 예외가 발생 된 컨트롤러 메서드의 결과 형식을 결정할 수 있기를 원하기 때문에 형식 (JsonResult의 json 및 ActionResult의 html)에 따라 특정 형식의 오류 데이터를 반환 할 수 있습니다. 누구든지 그 유형을 결정하는 방법을 가르쳐 줄 수 있습니까? 어떤 도움을 주시면 감사하겠습니다. 사전에컨트롤러의 OnException에서 결과 유형을 결정하십시오.

덕분에

답변

4

는 않았나 기본 라우팅을 변경 가정 :

protected override void OnException(ExceptionContext filterContext) 
{ 
    var action = filterContext.RouteData.Values["action"].ToString(); 
    var type = filterContext.Controller.GetType(); 
    var method = type.GetMethod(action); 
    var returnType = method.ReturnType; 
    //...do whatever here... 
} 

행운을 빕니다!

+0

편집 및 편집 (하나의 GET, 하나의 POST)과 같은 이름의 두 작업이 주어지면 AmbiguousMatchException이 발생합니다. 문맥에서 어떤 행동이 불려지는지 결정하는 방법이 있습니까? – yoozer8

+2

@Jim 그런 경우에는 type.GetMethods(). where (m => m.Name.Equals (action))를 사용하고 현재 요청에 사용 된 동사를 인식하고 속성을보고 올바른 메소드를 얻을 수 있습니다 각 방법의. – uvita

관련 문제