2012-09-01 15 views
11

Gerçek bir kafa temizleme makinesi. Bu yönlendirme ileWebApi Controller Denetleyici için eylem bulunamadı

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); 
     } 
    } 
} 

ve: - İki Ben bir JSON webcoder olarak kullanıyorum ApiControllers oluşturduk

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

Ve iken

/api/airline/get/ba veya /api/airline/get/ ziyaret mükemmel çalışıyor, İnceleme herhangi bir varyasyon ziyaret etmiyor. Burada gerçekten eksik olan bir şey görebilen var mı?

Yardım memnuniyetle karşılanır.

+2

Tam olarak kullandığınız URL'leri ve varsa hata mesajını ve stacktrace'i gönderebilir misiniz? Tahmin et: Bir hava yolu veya inceleme göndermiyorsun ve “int” değeri bir değer olmalı. 'Int?' Olarak değiştirin – nemesv

+0

Aşağıdaki URI'leri denedim: '/ api/reviews/get/ba',/api/reviews/get /',/api/comments/get/1' ... I her zaman aynı çıktıyı alın: - '{ $ id:" 1 ", İleti:" İstek URI'siyle eşleşen hiçbir HTTP kaynağı bulunamadı "http: // localhost: 88/ControlTower/api/reviews/get/1 '. ", MessageDetail:" Denetleyicide "Yorumlar" eylemi ile eşleşen bir eylem bulunamadı. " } ' – dooburt

cevap

18

Varsayılan rotanız, "code" adında bir parametre bekleniyor. Havayolu ve/veya gözden geçirme adlı bir parametreyi kabul etmek için bir yol eklemeniz veya denetleyiciye parametrenin adını açıkça bildirmeniz gerekir.

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

+0

Çok teşekkürler Jason;) – dooburt

İlgili konular