2013-11-04 3 views
0

웹 서비스 프로젝트가 하나가 아닌 여러 API를 호스팅하도록 확장되어 있으므로 이전 버전을 손상시키지 않고 라우트를 정리하려고했습니다. 다음과 같은 매개 변수를 컨트롤러라는 이름의 API 떨어져 앉아서 수용하는데 사용 된 주요 API : 이제MVC 라우팅 리디렉션

api/{language}/{action}/{*parameters} 

, 나는 자신의 컨트롤러에있는 각 API를 수용하려고하는 지역이라는 API 및 경로 의지를 가지고 다음과 같이 :

api/{controller}/{language}/{action} 

나는 여전히 이미 이전 경로를 사용하여 기존 응용 프로그램에 사용할 수있을 이전 경로를 필요, 난 그냥 이전 경로 지정을 잡을 것 2 "기존의"경로를 생성 할 수 있도록 기대했다 새 컨트롤러를 사용하십시오. 나는 이것을 시도했다. 그러나 새로운 위치와 ikd 사람이 그 다음 단지 404를 돌려 주었다.

api/{language}/{action}/{*parameters}", 
new { controller = "api1", action = "Index", language = "json" } 

이것을 달성하는 방법에 대한 아이디어? RouteMagic을 시도했지만 작동하지 않았습니다. 어쩌면 리디렉션을 잘못 설정했을 수도 있습니다.

+0

- 아무것도 일치 두 번째 경로도 첫 번째 경로와 일치합니다. 이게 어떻게 작동할까요? –

답변

0

이 좋아하는 샌드위치를 ​​얻기 후에 알아 냈 ... 바로 이전 버전은 새로운 경로 형식에 잡을 것이다 그래야 경로 제약 조건을 추가 할 필요가 : 나는 조금 혼란 스러워요

routes.MapRoute(
     "API_default", 
     "api/{controller}/{language}/{action}", 
     new { controller = "api1", action = "Index", language = "json" }, 
     new { language = "json|xml" } 
    ); 

    routes.MapRoute(
     "API_legacy", 
     "api/{language}/{action}/{*parameters}", 
     new { controller = "api1", action = "Index", language = "json", parameters = UrlParameter.Optional }, 
     new { language = "json|xml" } 
    );