2012-09-11 2 views
0

로컬로 (IIS Express) MVC 응용 프로그램을 개발하고 테스트하기 위해 IIS 7.5로 주기적으로 배포하고 있습니다. IIS 7.5에서 새 경로가 작동하지 않습니다.

난 그냥 내 Global.asax.cs 파일 경로라는 새를 추가했습니다 : 나는 "MyCustomRoute"를 사용하여 Html.RouteLink을 설정하고 모두가 내 로컬 컴퓨터에서 잘 작동

 routes.MapRoute(
      "MyCustomRoute", // Route name 
      "{documentID}/{year}", // URL with parameters 
      new { controller = "Documents", action = "CurrentVersion", year = DateTime.Now.Year }, // Parameter defaults 
      new { documentID = @".*\d+.*" } // Regex matches only where documentID contains numerical values. 
     ); 

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

. 그러나 웹 서버에서이 스크립트를 실행하면 Html.RouteLink에서 빈 링크가 생성됩니다. 또한 URL을 브라우저에 직접 입력하면 404가 표시됩니다.

경로가 등록되지 않은 것처럼 보입니다. 내가 뭘 놓치고 있니?

+0

경로를 알려주십시오. 또한 때로는 경로를 나열하는 순서가 중요합니다. 새 경로를 기본 경로 앞에 배치하십시오. – user1477388

답변

0

코드를 보지 않고도 경로를 디버그하는 것은 불가능합니다. 올바른 도구를 사용하면 어떤 일이 일어나고 무엇이 일치하는지 쉽게 볼 수 있습니다.

Phil Haack은 RouteDebugger이라는 우수한 오픈 소스 도구를 만들었습니다. get it through NuGet을 사용하고 http://haacked.com/archive/2011/04/12/routedebugger-2.aspx에서 사용하는 방법에 대해 읽어보십시오. 이 프로젝트의보다 강력한 버전은 RouteMagic and is at Codeplexgit입니다. 당신의 정규식을 바탕으로 this blog post

UPDATE

에서 세부 사항, 당신은 documentID이 탐욕으로 인해 일치하지 않을거야. .*은 모든 항목과 일치하므로 앞의 패턴으로 모든 일치 항목이 제거되므로 \d+과 일치 할 수있는 기회는 없습니다. 정규식 탐욕과 게으름에 대해 http://www.regular-expressions.info/repeat.html에서 읽을 수 있습니다.

업데이트 2

정규 표현식에 아마 내가 프로그램에서 최악 해요 것, 그리고 내가 같은 문제에 대한로 실행 한 그들에 그렇게 나쁘지이기 때문에 나는 그 문제를 인식하는 유일한 이유는 백만 번. 즉, 내가 라고 생각하면@"(.*?)(\d+?)(.*?)" 트릭을 할 것입니다. 그것은 어떤 괄호도없이 작동해야합니다 (예 : @".*?\d+?.*?"). 그러나 나는 그것들을 읽기 쉽도록 유지하려고합니다.

+0

안녕하세요, 내 경로를 추가했지만 반드시 로컬로 작동하는 경우 경로 자체에 문제가없는 것입니까? 마치 내 새 루트가 등록되지 않은 것처럼 보입니다. – James

+0

어떤 요청이 실패하고 있습니까? – smartcaveman

+0

@james, 최신 변경 후에 웹 프로젝트의 어셈블리를 다시 배포 하시겠습니까? – smartcaveman

관련 문제