2008-09-16 4 views
5

ASP.NET MVC 라우팅을 시도하고 있는데 문제가 발생했습니다. 나는/Admin/Pages/섹션을 가지고 있으며/Pages /를 통해서도 접근 할 수있다. 나는 무엇을 놓칠 수 있 었는가? Global.asax에있는Asp.net MVC 라우팅이 모호합니다. 동일한 페이지에 대해 두 경로가 있습니다.

라우팅 코드 :

public static void RegisterRoutes(RouteCollection routes) 
{ 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
     routes.MapRoute(
      "Pages", // Route name 
      "Admin/Pages/{action}/{id}", // URL with parameters 
      // Parameter defaults 
      new { controller = "Pages", action = "Index", id = "" } 
     ); 

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

    } 

감사합니다!

답변

6

/Pages /에 대한 명시적인 경로를 처음에 추가하는 것이 좋습니다. 정확히 매개 변수와 동일

컨트롤러 = "페이지" 행동 = "인덱스" ID = ""

을 :

문제는이 기본 경로에 의해 처리 및 파생되고있는 점이다 귀하의 관리 경로에 대한.

2

{Controller} 태그가 "Pages"가 될 수 없도록 기본 규칙에 제약 조건을 추가 할 수 있습니다.

0

기본 동작 설정과 충돌하는 {action} 토큰/매개 변수를 먼저 라우팅했습니다. 경로에서 매개 변수 이름을 변경하거나 기본 동작 이름을 제거하십시오.

6

이와 같은 라우팅 문제는 내 Route Debugger 어셈블리를 시험해보아야합니다 (테스트에만 사용). 이러한 유형의 문제를 파악하는 데 도움이 될 수 있습니다.

P. 페이지 컨트롤러를 보호하려면 [인증] 속성을 사용해야합니다. URL 인증에만 의존하지 마십시오.

+0

이것이 의도적 인 이유는 PagesController의 Index 작업 메서드를 보호하기위한 것이기 때문입니다. –