2013-11-03 4 views
2

asp.net 웹 API를 사용하여 Http 서비스를 작성 중이며 두 매개 변수가 동일한 매개 변수를 사용하는 컨트롤러에서 가져 오는 방법을 알고 경로를 정의하는 방법을 알 수 없습니다. 두 메서드를 모두 일치 시키면 하나만 호출 할 수 있고 다른 하나는 컨트롤러에서 아무런 작업 메서드도 찾을 수 없다는 오류가 발생합니다.두 매개 변수가있는 웹 API 컨트롤러 예 :

public IQueryable<RecipeDTO> Get(string lang) 
{ 

} 

[HttpGet] 
public RecipeDTO Details(string lang, int id) 
{ 

} 

[HttpGet] 
public IQueryable<RecipeDTO> Random(string lang, int count) 
{ 


} 

당신은 나는 다음과 통화를 할 수 있습니다, 방법 세부 사항 및 랜덤 동일한 매개 변수를 참조하십시오 :

여기

RouteTable.Routes.MapHttpRoute(
     name: "default", 
     routeTemplate: "{controller}/{lang}", 
     defaults: new { lang = System.Web.Http.RouteParameter.Optional }); 
RouteTable.Routes.MapHttpRoute(
     name: "details", 
     routeTemplate: "{controller}/{lang}/{action}/{id}"); 

정의 된 경로와 컨트롤러의 방법입니다 controller-name/en (첫 번째 get 메소드와 일치)

컨트롤러 이름/ko/details/1 (세부 방법과 일치)

하지만 난하려고하면

컨트롤러 이름/EN/랜덤/5

나는 아무 조치 방법은 컨트롤러에서 발견 된 오류, 내가 그 문제를 해결하는 방법에 대해 설명합니다.

미리 감사드립니다.

답변

2

웹 API는 경로 변수를 매개 변수 이름과 일치시키는 데 엄격합니다. 다음 (여기에 우리가 앨리어싱 된 count 매개 변수)에 액션을 변경 시도 할 수 있습니다 :

[HttpGet]
public IQueryable<RecipeDTO> Random(string lang, [FromUri(Name = "id")]int count)

관련 문제