2013-10-17 9 views
1

다음과 같이 내가 웹 API를 만드는 오전에 Sitecore 구성을 읽을 수 없습니다 다음과 같이는 콘솔 응용 프로그램

public class ProductsController : ApiController 
{ 
    //Get Products Prices 

    public string GetProductPrices(string ProductName) 
    { 
     //some method definition 
    } 
} 

나는 webapiconfig을 정의했습니다.

1) http://site.com/api/Products/apple-ipod-touch/GetProductPrices

2) http://site.com/api/Products/GetProductPrices/apple-ipod-touch

을 :

config.Routes.MapHttpRoute(
     name: "Default", 
     routeTemplate: "api/{controller}/{action}/{id}", 
     defaults: new { controller = "Products", action = "ProductVariations", id = RouteParameter.Optional }); 

내가 URL에서 웹 API를 호출하려고, 그것은 다음과 같이 내가 위의 메소드를 호출하고 400

오류 나를 반환

제 실수를 바로 잡아주세요.

답변

0

처음에는 article을 읽으십시오.

ProductName으로 경로를 만들어야하거나 Id 매개 변수 입력으로 컨트롤러 이름을 만들어야합니다. 입력 매개 변수 IdProductName 경로를 매핑 할 수 없습니다.

추신 : api를 요청하는 첫 번째 방법은 유효하지 않습니다. 컨트롤러 이름에 url의 두 번째 위치가있는 경로가 있습니다. 경로가 세 번째 위치 일 수는 없으며 미리 정의 된 경로와 일치하지 않습니다. 당신이 경로를 수정하는 경우

: 당신의 webapi URL에

config.Routes.MapHttpRoute(
    name: "Default", 
    routeTemplate: "api/{controller}/{action}/{ProductName}", 
    defaults: new { controller = "Products", action = "ProductVariations", ProductName = RouteParameter.Optional }); 

그러나보다 효율적으로 사용하는 ID를,이 경우 URL은 깔끔한 될 것입니다.

+0

webapiurl에서 다음과 같이 변경되었습니다. config.Routes.MapHttpRoute ( 이름 : "기본", routeTemplate : "API/{컨트롤러}/{동작}/{제품 이름}", 기본값 : 새로운 {컨트롤러 = "제품"행동 = "GetProductPrices" , ProductName = RouteParameter.Optional}); – user2882431

+0

이게 무엇입니까? –

+0

webapiconfig에서 말한대로 수정했습니다. – user2882431