2011-01-06 4 views
2

라우팅과 관련하여 다소 특이한 문제가 있습니다. 년 동안 그것을 구성에 대해 걱정할 필요하지 후에 다시 라우팅 오는이 경우 Html.ActionLink를 사용하여 기본 경로가 작동하지 않는 이유는 무엇입니까?

, 나는 기본 경로를 사용하고 자원의 노선 무시 : 나는 Index과에 대한 작업과 함께 RulesController

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

routes.MapRoute(
     "Default", 
     // Route name 
     "{controller}/{action}/{id}", 

     // URL with parameters 
     new 
     { 
      controller = "Home", 
      action = "Index", 
      id = UrlParameter.Optional 
     }); 

을 Views> Rules 디렉토리의 LoremIndex.aspx, Lorem.aspx

나는 maseter 페이지에서 규칙/인덱스 겨냥한 ActionLink 있습니다

링크가 http://localhost:12345/Rules/로 렌더링되고 있으며 내가 URL에 Index을 입력 할 때 (404)

을 얻고있다

<li><div><%: Html.ActionLink("linkText", "Index", "Rules")%></div></li> 
응용 프로그램이 작업으로 라우팅합니다.

내가 "Index"에서 "Lorem"에 기본 경로 동작을 변경

는 액션 링크는 더 이상 기본 경로와 정확하게 색인 액션에 응용 프로그램 노선의로 Index를 추가하지 http://localhost:12345/Rules/Index로 렌더링되고있다.

나는 Phil Haack's Routing Debugger을 사용했지만 URL을 입력하면 http://localhost:12345/Rules/이 404를 사용하고 있습니다.

나는 신참 실수, 관련 SO 질문 및 기본 RTFM을 다 커버했다고 생각합니다.

"규칙"은 라우팅에서 예약어가 아닌 것으로 가정합니다. 루트를 업데이트하고 디버깅하는 것 이외에 무엇을 볼 수 있습니까?

+1

IgnoreRoutes가 정의되어 있습니까? 우연히 웹 사이트 디렉토리에 '규칙'이라는 폴더가 있습니까? –

+1

나는 기본적으로 경로를 무시하고 (지금 질문에 추가됨) 폴더에 예가 있습니다. 건축가는 Business Objects에 대한 또 다른 프로젝트를 만들지 않았으므로 "규칙"폴더가 있습니다. 나는 재구성하고 테스트 할 것이다. 이 코멘트를 답안으로 추가하십시오. – StuperUser

+0

붐. 네이선 감사합니다. – StuperUser

답변

2

웹 사이트와 동일한 디렉토리에 '규칙'이라는 폴더가 없는지 확인하십시오. 기본 구성에서 ASP.NET MVC 경로는 경로 정의 전에 실제 경로를 고려합니다. 웹 사이트의 실제 폴더 경로와 일치하는 경로가 정의되어 있으면 라우팅 엔진이 완전히 무시됩니다.

당신은 falseRouteTable.Routes.RouteExistingFiles 속성을 변경하여 물리적 경로로 라우팅을 해제 할 수 있지만,이 작업을 수행하고 응용 프로그램 (예 등 이미지, 스크립트, 스타일 시트 등) 물리적 자원에 대한 경로가있는 경우 당신은 사람들을 위해 수용해야합니다 일치하는 IgnoreRoute() 정의가있는 경로. 예 : RouteTable.Routes.IgnoreRoute("content/{*pathInfo}");.

+0

감사 네이선, 두 번째 단락은 특히 흥미롭고 유용합니다. – StuperUser

관련 문제