2010-05-20 2 views
3

컨트롤러 구성에 대해 망설이고 문제가 발생했습니다. 나는 다음과 같은 물리적 구조IIS7에서 asp.net mvc route가 물리적 경로와 충돌합니다.

/Home/HomeController.cs 
/Home/Index.aspx 
/Home/About.aspx 

이 있고 난 URI 요청하는 경우

는 :

/Home/Index 

나는 사용자 정의 IControllerFactory 및 IViewEngine에를 사용하여 403 Directory Listing Denied :(

(메신저를 얻을 수 이 기본 경로가 아닌 다른 경로를 살펴보십시오)

이유는 무엇입니까? appening? (내가 403은 /Home 폴더에 닿아 있기 때문에 403이라는 것을 알지만, 폴더를 때리는 이유는 무엇입니까?)

UrlRoutingModule이 경로를 다시 작성하고 컨트롤러가 요청을 받아 들일 수없는 이유는 무엇입니까?

Application_BeginRequest 화재가 발생하지만 파일 시스템에서 시도하여 IIS에 제어 권한을 다시 전달하는 것으로 보입니다.

다시 쓰기 전에 존재하는 경우 실제 경로로 설정되는 UrlRoutingModule입니까?

이 방법을 사용할 수 있습니까?

N.B. 내 컨트롤러 등 난이 명백한 옵션 알지만, 그 질문하지 재배치 제안하지 마십시오;

감사 통합 모드에서 IIS7을 사용)

답변

4

라우팅 추상화 것 때문에 디스크에 동등한 파일이없는 요청 만 라우팅합니다.

폴더 구조의 이름을 바꾸는 것 외에는 다른 옵션이 없습니다.

- 편집 아니요, 실제로 RouteCollection의 RouteExistingFiles 속성을 설정하여 해당 "기능"을 사용 중지 할 수 있습니다.

+0

MEH이 :(이 "선호"코드가 사는 곳 확인 감사 –

1

실제로 라우팅 모듈에는 실제 파일이있는 경우 기본 설정이 있습니다. 접근성 검사가 실패한 후에도 경로를 변경하지 않아야합니다.

별도의 컨트롤러/뷰를 사용하면 MVC 아키텍처의 핵심적인 부분을 강화할 수 있다는 것을 알게 되었습니까? 같은 폴더에 컨트롤러/뷰를 유지하면 나중에 개발자에게 혼란을 줄 우려가 있습니다.

+0

흠 당신은? 알고 내가 리플렉터 사파리에 갔다하지만 사자 나 :( –

+0

System.Web.Routing.RouteCollection.GetRouteData을 어갈 (HttpContextBase) – SerialSeb

관련 문제