2010-08-19 5 views
0

'포함 된'뷰를로드하기 위해 자체 VirtualPathProvider를 구현했습니다. 비주얼 스튜디오에서 실행하는 경우ASP.NET MVC, 사용자 지정 VirtualPathProvider 및 IIS6

이 아주 잘 작동하지만, 나는 IIS6에서 실행할 때 메시지 '을 (를) 찾을 수 없습니다 뷰'를 얻을.

web.config에 누락 된 것이 있습니까? 아니면 다른 문제가있을 수 있습니까?

일부 로깅을 추가했으며 Application_Start에 사용자 지정 VirtualPathProvider를 등록하더라도 System.Web.Hosting.MapPathBasedVirtualPathProvider가 여전히 사용됩니다.

답변

0

사용하지 않으셨습니까? VirtualPathProviders는 스택에서 작동하므로 VirtualPathProvider에서 기본 클래스 멤버 인 "Previous"가 실제로 "MapPathBasedVirtualPathProvider"의 인스턴스임을 알아야합니다. 당신이 경우

는 :

  1. 는 IIS

  2. 당신의 Web.config의 변화를 확인하기 위해 디버거를 연결 한 후 다음 (AN 재활용을 트리거) 저장, 다시 변경 - 여전히 부착 상태 !

  3. 장소 FileExists

  4. 에 VPP에 중단 점은 페이지

당신의 VPP를 맞고 있는가

히트? 그렇다면 첫 번째 요청 후에 MVC의 ViewEngine 캐싱으로 인해 VPP가 추가 요청에 대해 적중하지 못하는 문제가 발생할 수 있습니다 ...

+0

나는 아직이 시도하지 않았습니다. 그러나 필자는 FindView() 메소드에서 VPP (this.VirtualPathProvider)를 기록하는 사용자 정의 뷰 엔진을 만들었습니다. 내 사용자 지정 VPP는 로그에 나타나지 않으며 캐시 된 뷰와 캐시되지 않은 뷰가 모두 해당 방법을 통과한다고 생각합니다. – Bertvan

+0

VPP가 ViewEngine에도 나타나지 않는 경우 Application_Start 메소드가 호출되어 VPP를 등록했는지 100 % 확신합니까? 등록은 Application_Start의 맨 처음 줄입니까? 그렇지 않은 경우에는 배치하십시오. VPP 등록이 실제로 적용될 수있는 장소는 매우 제한되어 있습니다. – Jeff

관련 문제