2013-07-11 5 views
0

MVB 패턴의 새내기이기 때문에 나와 함께하시기 바랍니다.ServiceRoute가 기존 경로를 오버라이드합니다.

은 내가이 ServiceRoute

RouteTable.Routes.Add(new ServiceRoute("rest", new WebServiceHostFactory(), typeof(ServiceName))); 

파일 global.asax이 이제 경로는 기존 경로를 오버라이드 (override)되어 정의했습니다. 이것을 더 잘 설명하기 위해, 설정은 "/rest/Controller/Action"입니다. 하지만 "/Controller/Action"

RouteEnginecalls에 내 ServiceRoute을 추가해야합니다.

정확히 매핑을 어떻게 설정할 수 있습니까?

답변

2

제약 조건을 사용하고 올바른 순서로 경로를 등록해야합니다.

full explanation of what's happening here을 얻을 수 있습니다.

읽을 때 MapServiceRoute 메서드가 사라지고 서비스를 등록하는 방법이 사용자가 선택한 것임을 기억하십시오.

IRouteCOnstraint를 구현할 필요가 없습니다. 정규식을 사용할 수 있습니다.

+0

'IRouteConstaint'를 사용해야하는 경우 입력 해 주셔서 감사합니다. 그럼'routes.IgnoreRoute ("{rest}")와 같이 작성해야합니다. 제발 내가 틀렸다고 정정 해주세요. – joshua

+0

등록 순서를 정하면이 문제가 해결됩니다. – joshua

+0

아니요! 모든 경로 맵은 "who"가 일치하는 URL을 처리하도록 정의합니다. 라우팅 시스템은지도 등록 순서에서 url을 일치 시키려고합니다. 첫 번째 일치 경로는 "누가"처리하고 더 이상 경로가 확인되지 않습니다. IgnoreRoute는 "noone"이 해당 URL을 처리한다는 것을 의미하는 특별한 맵이므로 더 이상 라우트가 점검되지 않으면 url은 삭제됩니다. 이는 웹 사이트의 .axd, .asmx 또는 기타 특수 http 핸들러에 사용됩니다. 이 경우 URL을 삭제하는 것이 흥미 롭기 때문에 경로 테이블의 외부에서 처리됩니다. 당신은 직접 IRouteConstraint 대신에 "regex"를 사용할 수 있습니다 – JotaBe

관련 문제