2

CMS의 일부로 실제 파일 구조 대신 단일 파일을 제공하도록 설계된 사용자 지정 VirtualPathProvider를 만들었습니다. 나는 그것이 서버에 파일이 실제로 존재하면 그 파일이 제공 될 수 있도록 설정했다. 파일이 없으면 대신 해당 주소에 저장된 가상 컨텐트가 제공됩니다. 이는 데이터베이스에 저장된 파일에서 웹 사이트를 제공한다는 개념과 유사하지만이 경우 콘텐츠는 서버의 XML 파일에 저장됩니다.사용자 지정 VirtualPathProvider가 디렉터리로 끝나는 URL을 처리 할 수 ​​없음

이 설정은 특정 페이지에 대한 요청이있을 때 완벽하게 작동합니다. 예를 들어 "www.mysite.com/foobar.aspx"를 요청하면 "foobar.aspx"에 대해 저장된 콘텐츠가 제공됩니다. 또한 "www.mysite.com/subdir/foobar.aspx"를 요청하면 적절한 콘텐츠도 제공됩니다.

문제는 다음과 같습니다. "www.mysite.com/foobar"와 같은 항목을 요청하면 문제가 발생하기 시작합니다. 디렉토리가 디스크에 있고 (index.aspx와 같이 IIS에 구성된 기본 페이지가없는 경우) "Directory Listing Denied"오류가 발생합니다. 디렉토리가 존재하지 않으면 404 - Resource Not Found가 표시됩니다.

나는 여러 가지 시도를 해왔으며, 지금까지 내가 한 일은 아무런 차이가 없었다. IIS가 단순히 디렉토리 (또는 기존 디렉토리의 기본 파일)가 존재하지 않음을 알리고 요청을 처리 할 때 응용 프로그램에 요청하지 않고 자체 오류 코드를 제공하는 것처럼 보입니다. 응용 프로그램에 도달 한 적이 있다면 문제를 해결할 수는 있지만, 그만큼 나는 분실했습니다. 이 문제를 일으키는 IIS의 설정이 있는지 아는 사람 있습니까?

나는 주제에서 찾을 수있는 모든 자원을 찾고 비어 있습니다. 데이터베이스와 ZIP 파일의 컨텐츠를 제공하는 자습서를 읽었 기 때문에 이것이 가능해야한다는 것을 알고 있습니다. 도움!

추신, 나는 IIS6을 실행하고 있으며이 특정 확장자에 대해 이렇게 구성된 경우 .NET 3.5

+0

IIS6에서 모든 요청을 ASP.NET에 매핑하는 스타 매핑이 있습니까? – Eilon

+0

나는 잘 모르겠다. 그래서 나는 그것이 아니오를 의미한다고 생각한다. 나는 어떻게 그것에 대해 갈 것인가? – Ender

답변

2

IIS는 ASP.NET 프로세스에 요청을 전달합니다. 기본값은 aspx, ascx 등입니다. 즉, .html 파일을 요청하면 ASP.NET은 해당 HTTP 요청을 보지 못합니다. 빈 확장과 마찬가지로

이 동작을 변경하려면 ASP.NET 프로세스에 와일드 카드 매핑을 추가하십시오. IIS 관리자를로드하고 웹 사이트의 속성으로 이동하여 홈 디렉터리 탭을 봅니다. "구성"을 클릭하면 응용 프로그램 확장 매핑이 나타납니다.

+0

완벽하게 작동했습니다. 감사합니다. – Ender

+0

ASP.NET 개발 서버에서도 이와 같은 작업을 수행 할 수 있습니까? –

관련 문제