2012-06-13 13 views
4

특정 경로에 대해 요청 필터링이 완전히 해제되도록 IIS 7.0 이상 또는 7.5 이상을 구성 할 수있는 방법이 있습니까? 즉 (*.cs 파일을 제공하는 것은 명시 적으로 applicationHost.config으로 금지되어 있기 때문에) 특정 경로에 대한 IIS 요청 필터링 사용 안 함

http://host.local/foo/bar.cs 

는 금지되어 있습니다,하지만

http://host.local/foo/allow-all/bar.cs 

이 허용됩니다. 당신의 allow-all 디렉토리에서

답변

5

, 당신은 다음과 같은 구성으로 web.config 파일을 만들 수 있습니다

<configuration> 
    <system.webServer> 
     <security> 
      <requestFiltering> 
       <fileExtensions> 
        <remove fileExtension=".cs" /> 
       </fileExtensions> 
      </requestFiltering> 
     </security> 
     <staticContent> 
      <mimeMap fileExtension=".cs" mimeType="text/plain" /> 
     </staticContent> 
    </system.webServer> 
</configuration> 

이 구성은 요청 필터링에서 .cs 확장을 제거합니다. 또한 IIS가 콘텐츠를 제대로 제공하려면 MIME 형식이 필요하므로 .cs 확장명이 text/plain으로 추가됩니다.

이러한 변경 사항은 모든 하위 디렉터리 allow-all에도 적용됩니다. 이 구성은 통합 된 응용 프로그램 풀에서 작동합니다. Classic에서는 .cs도 명시 적으로 허용하지 않는 HTTP 처리기가 있으므로 추가 변경이 필요할 수 있습니다.

+0

그게 좋겠지 만'/ allow-all' 경로 그 자체는 없어요. ASP.NET MVC Routing에서 처리하는 동적 URL입니다. 이러한 상황에서 가능합니다. –

+0

@Anton 역동적이라면 직접 해보기를 시도해보십시오 - 요청 된 파일의 내용을 읽고 브라우저에 보낼 일부 스크립트에 URL 재 작성 규칙을 작성하십시오. URL 재 작성 모듈이 요청 필터링 전후에 실행되는지는 확실하지 않습니다. (실제/기존 파일의 경우) 이후에는 존재하지 않는 URL의 경우가 아닌 것으로 생각합니다. – LazyOne

+0

@LazyOne URL 재 작성은 요청 필터링 후에 발생하는 것으로 보입니다. 또는 적어도 내가 설치 한 사용자 지정 처리기는 질문에 대한 경로에 대해 내 필터에 을 추가 할 때까지 질식했습니다. – jklemmack