2012-07-25 2 views
2

라우트의 기본 값은 다음과 같은 경로 :Asp.net MVC - 내가 지정한

routes.MapRoute(
      "myRoute1", 
      "{controller}/{action}/{id}", 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional }); 

routes.MapRoute(
      "myRoute2", 
      "public/{controller}/{action}/{id}", 
       new { controller = "PublicHome", action = "Index", id = UrlParameter.Optional }); 

다음과 같은 URL이 [/public] URL에 대한 myRoute2에 있기 때문에

[http://localhost:58658/public] 

일을 기대, I 컨트롤러와 액션에 대한 기본값을 지정했으나 작동하지 않는 것 같습니다. 어떤 아이디어? 이 매개 변수 NOTA 때문에 당신은, 당신이 경로에서 대중 주위에 괄호를 넣어 안

+0

순수 추측 : 'public/{controller}/{action}/{id}'의 앞뒤에 넣기 – Dmitry

+0

경로 URL은 '/'또는 '~'문자로 시작할 수 없으며 '? ' 캐릭터. – haroonxml

답변

2

경로 선언의 순서를 변경하면 첫 번째 (기본) 경로가 URL과 일치하고 PublicController를 검색합니다.

+0

주문 변경 작업이 감사합니다. – haroonxml

0

감사합니다.

+0

나는 {public} 대신에 이전에 공개했으나 여전히 작동하지 않습니다. – haroonxml

3
routes.MapRoute(
      "myRoute1", 
      "public/{controller}/{action}/{id}", 
      new { controller = "PublicHome", action = "Index", id = UrlParameter.Optional }); 

설치 RouteDebugger. 주어진 URL에 대해 경로가 조회되는지 여부를 알려줍니다.

여러 경로와 일치하는 경우 첫 번째 경로가 처리됩니다. RouteDebugger에 모든 경기가 표시됩니다. 그것들을 적절히 재정렬하는 것은 당신에게 달려 있습니다.

404 페이지에서 ROuteDebugger가 작동하지 않는 경우 사용자 지정 오류를 설정하십시오. 예 :

<customErrors mode="On" defaultRedirect="err/index"> 
    <error statusCode="404" redirect="err/notfound" /> 
</customErrors>` 
+0

나는 {public} 대신에 이전에 공개했으나 여전히 작동하지 않습니다. – haroonxml

+0

다음 예외가 발생합니다. 리소스를 찾을 수 없습니다. 설명 : HTTP 404. 찾고있는 리소스 (또는 해당 종속성 중 하나)가 제거되었거나 이름이 변경되었거나 일시적으로 사용할 수없는 리소스 일 수 있습니다. 다음 URL을 검토하고 철자가 올바른지 확인하십시오. 요청 된 URL :/public/ – haroonxml

+0

경로가 일치하도록 [RouteDebugger] (http://nuget.org/packages/RouteDebugger)를 설치하십시오. "PublicHome"이라는 컨트롤러에 "Index"라는 GET 액션이 있는데 필수 매개 변수가 없습니다. –