2014-07-11 3 views
0

중첩 된 ApiController 클래스에 MapHttpRoute를 매핑 할 수 있습니까? 그렇다면 RouteTemplate이 달성 한 것은 무엇입니까?중첩 클래스가있는 WebApi 경로

예 중첩 된 컨트롤러 : 내가 사용 해봤

public class whatever 
{ 
    public class NestedController : ApiController 
    { 
     [HttpGet] 
     public object five() 
     { 
      return 5; 
     } 
    } 
} 

+ NestedController하지만 난 어떤 유형이 없었다

얻을 어떤 대해서 typeof (whatever.NestedController) 보고서와 같은

GET ApiRoute/whatever+nested/five 

컨트롤러와 일치하는 것을 찾았습니다

+0

'무엇이든'없이 'Get ApiRoute/nested/five'을 시도 했습니까? –

+0

예, "아니오 유형을 찾았습니다 ...."응답. – valcon

답변

0

라우팅 엔진은 구체적인 클래스 만 찾습니다. 그들이 속한 어셈블리 나 그들이 속한 네임 스페이스는 중요하지 않지만 다른 클래스에 중첩 될 수는 없으며 추상이 될 수도 없습니다.

장점 중 하나 (이 스트레칭은 비록)이 당신이 DLL에서 "숨기기"컨트롤러와 같은 웹 응용 프로그램에서이를 활성화 할 수 있다는 것입니다 수 있습니다 :

DLL :

public class Wrapper { public class MyController : ApiController { /*code goes here*/ } } 

웹 응용 프로그램 :

public class MyController : Wrapper.MyController { } 

내가 말한 모두는, 나는 그것을 추천하지 않는다. 보안 구멍을 열거 나 API 업데이트에 취약한 응용 프로그램을 만들 수 있으므로 설계된대로 사물을 사용하는 것이 가장 좋습니다.