2009-07-01 6 views
7

컨트롤러 (및 이후의 경로)를 PropertiesController라는 이름으로 사용하려고하면 까다로운 문제가 발생합니다. ."PropertiesController"라는 컨트롤러가있는 ASP.NET MVC 라우팅

내 솔루션에서 "등록 정보"라는 디렉토리 (실제로 제거 할 수없는 디렉토리)가 있기 때문입니다. 이 둘 사이에 방법이 있을까요?

경로 설정은 단지 하나의 간단한 경로입니다 :

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

와 "http://localhost/aptment2/properties/"을 요청할 때 내가 IIS7에서 얻을 오류 것은 :

alt text

는 확실히 이번 라운드 방법이있다 내가 찾을 수없는 것? 건배.

+0

직접 해당보기를 탐색하려고하거나 F5 또는 Ctrl + F5를 사용하여 default.aspx 페이지를 먼저 살펴 보시겠습니까? default.aspx 대신 시작 페이지로 설정된보기가있는 경우 경로 등록이 무시되는 경우에만 궁금합니다. – nkirkes

+0

방금 ​​2 시간 동안 디버깅 하려다가 불에 태워 버렸습니다. 다음번에 기억해야합니다. – mxmissile

+0

URL이 '속성/색인'이라는 URL이 더 이상 엉망입니다. – mxmissile

답변

2

빠른 테스트를 실행하면 동일한 문제가 발생합니다. Properties가 아닌 다른 것을 사용하는 것이 가능한 옵션입니까?

+0

MVC의 모든 아이디어가 완벽하게 통제되고 URL 명명 체계가 가능한 한 깨끗한 상태를 유지하고 싶다면 가능한 한 최선을 다하고 싶습니다. –

+0

글쎄, 일종의. 그것이 라우팅 뒤에있는 아이디어입니다. MVC 일 필요는 없습니다. 그러나 MVC는 예약어 나 다른 리소스 이름을 사용하지 않는 것을 포함하여 특정 규칙에 의존합니다. 그 경로 정의를 더 자세히 잠그는 것을 제안하거나 (제안과 함께 편집을 추가 할 것입니다) 또는 컨트롤러에 대한 다른 이름을 제안하는 것이 좋습니다. – nkirkes

+0

나는 조금 더 경로를 잠그고 동일한 결과를 얻으려고했다. 당신은 이것에 솔직 할지도 모르지만 주위에 방법이 있는지 궁금해 할 것입니다. – nkirkes

0

옵션이 맞는지 잘 모르겠지만 기존 파일로 라우팅하지 못하도록 할 수 있습니다. 다른 사람이 같은 문제가 있기 때문에

routes.RouteExistingFiles = false; 
4

IIS Express를 사용하도록 구성된 MVC 3 응용 프로그램에 PropertiesController 설정이 있습니다. 나는 당신이하는 정확한 에러를 얻지는 못하지만 비슷하다. (404.20 디폴트 문서가 없다.) 나는 같은 이유로 확신한다.

컴파일 된 빌드 빌드를 게시하고 속성 폴더가 없으므로 프로덕션 환경에서 문제가 발생하지 않습니다.

로컬로 개발하는 동안 문제를 해결하려면 모든 정적 컨텐츠 (scripts/css/etc ...)가 하나의 디렉토리에 있고이를 RouteExistingFiles을 켜는 동안 무시합니다.

routes.IgnoreRoute("static/{*wildcard}"); 
    routes.RouteExistingFiles = true; 

내 문제가 해결되어 이제 example.com/properties/ 오류를 찾을 수 있습니다.