0

こんにちは、コントローラー API 内に 2 つのメソッドがあります。

[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/ から何らかのメソッドにアクセスしようとすると、「リクエストに一致する複数のアクションが見つかりました」というメッセージが返されます。

ありがとうございます。

4

2 に答える 2

4

[HttpPost] と [HttpGet] には別々のメソッドを使用する必要があります。

于 2013-09-04T18:26:05.163 に答える
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 }
            );

        }

お役に立てれば

于 2013-09-04T18:24:34.090 に答える