2013-09-04 2 views
0

Привет народ У меня есть 2 метода внутри в моем контроллере апи:несколько действий в ASP.NET контроллера апи

[HttpPost] 
[HttpGet] 
public IEnumerable<Hotel> Get(HotelSearch hotelSearch) 
{ 
    try 
    { 
     if (hotelSearch == null) 
     { 
      hotelSearch = new HotelSearch 
      { 
       Rooms = new List<RoomSearch> { new RoomSearch { AdultsQuantity = 1, ChildrenQuantity = 0 } }, 
       Stars = 0, 
       City = "MIA", 
       IsoCountry = "US", 
       DepartureDate = Convert.ToDateTime("10/10/2013"), 
       ArrivalDate = Convert.ToDateTime("17/10/2013") 
      }; 
     } 
    } 
    catch (Exception ex) 
    { 
     Elmah.ErrorSignal.FromCurrentContext().Raise(ex); 
    } 

    return HotelService.GetHotel(hotelSearch); 
} 

[HttpPost] 
[HttpGet] 
public Hotel GetDetails(Hotel hotel) 
{ 
    //return HotelService.GetHotelDetails(hotel); 
    return new Hotel(); 
} 

Следуйте моим WebApiConfig:

public static void Register(HttpConfiguration config) 
{ 
    config.Routes.MapHttpRoute(
     name: "DefaultApi", 
     routeTemplate: "api/{controller}/{action}/{id}/", 
     defaults: new { id = RouteParameter.Optional } 
    ); 
} 

Когда я пытаюсь получить доступ к какой-либо метод из/api/Hotel/GetDetails /, возвращается сообщение: «Было найдено несколько действий, соответствующих запросу».

Спасибо и приветствую.

+0

Может ли вы показать нам свой маршрут? –

ответ

4

вы должны использовать использовать отдельные методы [HttpPost] и [HttpGet]

0

Вы должны добавить пользовательский маршрут, как показано ниже

public static void Register(HttpConfiguration config) 
     { 
      config.Routes.MapHttpRoute(
       name: "ApiByName", 
       routeTemplate: "api/{controller}/{action}/{name}", 
       defaults: null, 
       constraints: new { name = @"^[a-z]+$" } 
      ); 
      config.Routes.MapHttpRoute(
       name: "ApiByAction", 
       routeTemplate: "api/{controller}/{action}", 
       defaults: new { action = "Get" } 
      ); 
      config.Routes.MapHttpRoute(
       name: "DefaultApi", 
       routeTemplate: "api/{controller}/{id}", 
       defaults: new { id = RouteParameter.Optional } 
      ); 

     } 

Надеется, что это помогает

Смежные вопросы