0

ASP.NET MVC5를 사용 중이고 응용 프로그램 폴더 밖에있는 폴더에서 뷰를 렌더링하고 싶습니다. 내 자신의 사용자 지정 VirtualPathProvider 등록을 시도하고 순수한 HTML 페이지 렌더링을 지원하는 자체 VirtualPathProviderViewEngine을 만들었습니다. 나는 후자가 일하지만 전임자가 일하게 할 수는 없다. 문제의 경로를 탐색 할 때 MVC에서보기의 내부보기 폴더를 확인한 다음 외부 폴더를 찾길 원합니다.실제로 웹 응용 프로그램 폴더 외부에있는 뷰를 MVC 5에서 렌더링하도록하려면 어떻게합니까?

코드를 단계별로 실행하면 Views 폴더에있는 파일에 FileExists가 호출되고 ViewEngine 코드가 실행되지만 외부에있는 View에는 FileExists 검사가 실행되고 화면에 404가 표시됩니다. ViewEngine 코드에는 절대 들어 가지 않습니다. 나는 여기서 간단한 것을 놓치고 있음을 안다.

샘플 폴더 구조의 스크린 샷을 첨부하고 있습니다. 어떤 도움이라도 대단히 감사하겠습니다. FolderStructure

+0

이 링크를 VirtualPathProvider과 VirtualFile 확인을 무시할 수 있습니다,하지만 난 아무 것도 액세스 할 수있는 악성 스크립트를 방지하는 보안 기능 것으로이를 볼 수 있었다 서버가 아니라 응용 프로그램의 폴더 내에서만 사용할 수 있습니다. – krillgar

+0

당신의 요지를 볼 수 있지만 전체 MVC 스택에 대한 액세스 권한이 있으며 앱 개발자로서 필자가 선택한 위치에서 특정 파일을 찾을 수 있어야합니다. – abraganza

+0

잠재 중복 대상 : http://stackoverflow.com/q/5788631/1195056 – krillgar

답변

3

당신은 내가 잘못 될 수있는 Example

+0

나는 이미 이것을 시도했다. FileExists는 호출되지만 GetFile은 호출되지 않습니다. 나는 VirtualPathProviderViewEngine을 덮어 씌웠지만 메인 폴더 바깥에있는 파일을 찾지는 못한다. 내 파일은 데이터베이스가 아닌 파일 시스템에 있습니다. 예를 들어 제공된 예제에서 자세히 설명합니다. 도움에 감사드립니다. – abraganza

+1

FileExists 및 GetFile에 올바른 로직을 넣어야 Fileexists는 가상 파일 (보기로 정의 된 문자열 :)을 기존 파일에 매핑해야합니다. 맵이 존재하고 true를 반환하면 Getfile은 필요한 곳에서 뷰를 읽어야합니다. –

+0

통찰력 덕분에 @ laurent-lequenne! 나는 그것을 알아 냈다고 믿는다. virtualpathprovider, virtualfile 및 virtual directory를 만들어야하고 필자가 언급 한 메서드를 사용하여 파일 내용을 가져 와서 필요할 때로드해야했습니다. 위의 예제를 사용하지는 않았지만 필자가 살펴야 할 핵심 영역을 강조 표시하여 예상 한대로 응용 프로그램 외부의 폴더에서 파일을로드 할 수있었습니다. 감사! – abraganza