2012-12-27 5 views
0

Visual Studi0 2010을 사용하고 있습니다. WebApiConfig.cs 파일에 아래 설정이 있습니다.이 두 URL을 /Values/Values/1으로 매핑 할 수 있습니다. 잘 작동합니다. 내가 /Values/Machines/Values/Machines/100 같은 내 사용자 지정 URL을 원하기 때문에Asp.net 웹 API : 컨트롤러에서 아무런 작업도 찾을 수 없습니다.

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

, 나는 이하로 설정 위의 변경.

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

지금이 하나, /Values/1를 제외하고 URL을 아래에 매핑된다. 제가 누락 된 부분을 알려주십시오.

1./Values 
2./Values/Machines 
3./Values/Machines/100 

감사합니다.

+0

ValueController를 살펴볼 수 있습니까? –

답변

2

예상되는 동작입니다. 새 경로에 따라 첫 번째 매개 변수 Values는 작업이 될 것으로 예상되는 컨트롤러 이름, 두 번째 매개 변수 1 될 것으로 예상된다, 그러나 당신은에 도착하기 위해 이름 1

와 액션이없는 /Values/Index/1

이 같은 것을 할 수있는 :이 경우

routes.MapRoute(
    name: "IndexWithParam", 
    url: "{controller}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
    constraints: new { id = @"\d+" } 
); 

routes.MapRoute(
    name: "Default", // Route name 
    url: "{controller}/{action}/{id}", // URL with parameters 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

를 URL이 같은 경우 : 액션 당신은 새로운 경로가과 같이해야 당신과 함께 URL을 필요로 /Values/1, 그것은 첫째 경로를 칠 것이다 그것을로 리디렉션하십시오.. 두 번째 매개 변수가 숫자인지 확인하는 제약 조건을이 라우트에 두었습니다.

+0

감사합니다. 이것을 달성 할 수있는 방법이 있습니까? MapHttpRoute를 변경하거나 MapHttpRoute를 두 개 이상 보유하고 있습니까? 제발 조언. – APeter

+0

업데이트 된 답변보기 – Dmitry

관련 문제