2012-09-01 2 views
11

실제 헤드 - 이쪽을 가리 킵니다. 이 라우팅으로WebApi 컨트롤러 컨트롤러에 대한 작업을 찾을 수 없습니다.

namespace ControlTower.Controllers 
{ 
    public class ReviewsController : ApiController 
    { 
     private static IEnumerable<Review> MapReviews(int airline) 
     { 
      return (Jetstream.ReviewObject.GetReviews(airline)).Select(x => x); 
     } 

     [HttpGet] 
     public IEnumerable<Review> GetReviews(int airline) 
     { 
      return MapReviews(airline).AsEnumerable(); 
     } 

     [HttpGet] 
     public Review GetReviewById(int review) 
     { 
      return Jetstream.ReviewObject.GetReview(review); 
     } 
    } 
} 

: - - :

namespace ControlTower.Controllers 
{ 
    public class AirlinesController : ApiController 
    { 
     private static IEnumerable<Airline> MapAirlines() 
     { 
      return (Jetstream.AirlineObject.GetAirlines()).Select(x => x); 
     } 

     [HttpGet] 
     public IEnumerable<Airline> GetAirlines() 
     { 
      return MapAirlines().AsEnumerable(); 
     } 

     [HttpGet] 
     public Airline GetAirlineByCode(string code) 
     { 
      return Jetstream.AirlineObject.GetAirline(code); 
     } 
    } 
} 

와 - : 나는이 내가 JSON의 웹 서비스로 사용하고 ApiControllers을 만든

config.Routes.MapHttpRoute(
       name: "DefaultApi", 
       routeTemplate: "api/{controller}/get/{code}", 
       defaults: new { code = RouteParameter.Optional } 
      ); 

그리고 동안

/api/airline/get/ba 또는 /api/airline/get/ 방문 의 변형을 방문하면 리뷰은 완벽하게 작동합니다. 아무도 내가 여기에서 놓치고있는 것을 명백하게 볼 수 있습니까?

도움을 주시면 감사하겠습니다.

+2

정확한 URL을 게시 할 수 있습니까? 또한 오류 메시지와 스택 트레이스가있는 경우 게시 할 수 있습니까? 추측 : 항공사 또는 리뷰를 보내지 않고 'int'는 가치 유형이어야합니다. 그것들을'int? '로 변경하십시오. – nemesv

+0

'/ api/reviews/get/ba','/ api/reviews/get /','/ api/reviews/get/- '{ $ id : "1", 메시지 : 요청 URI 'http : // localhost : 88/ControlTower/api/reviews/get /와 일치하는 HTTP 리소스를 찾을 수 없습니다. 1 '. ", MessageDetail :"요청에 일치하는 컨트롤러'검토 '에서 작업을 찾을 수 없습니다. " }' – dooburt

답변

18

기본 경로에 "code"라는 매개 변수가 필요합니다. 경로를 추가하여 airline 및/또는 review라는 매개 변수를 수락하거나 컨트롤러에 매개 변수의 이름을 명시 적으로 전달해야합니다.

ex./api/reviews/get? airline = 1

+0

많은 감사 Jason;) – dooburt

관련 문제