답변

2

이 때문에 스크립트이다는 ASP.NET을위한 매핑합니다. 특정 확장명 만 ASP.NET에 매핑됩니다. 나머지는 IIS에서 직접 처리합니다. 이는 성능상의 이유로 설계된 것입니다.

두 가지 방법으로 문제를 해결할 수 있습니다.

  1. (즉, 폴더 및 파일에 대한 권한을 설정 직접) NTFS 파일의 ACL에서의 Web.config 파일에 권한 부여 규칙을 중복. 사용자의 인증 체계가 액세스 제어에 사용되는 계정 및 그룹과 일치하는지 확인하십시오. 즉, SQL을 사용하여 사용자 이름 토큰을 저장하는 경우 이러한 토큰이 반드시 다시 맵핑되지는 않으므로 작동하지 않습니다 도메인 사용자 및 그룹/역할.

  2. 비 -ASP.NET 파일을 제공하기 위해 IHttpHandler을 만듭니다. ProcessRequest 메서드에서 들어오는 URL에 Server.MapPath(url) 메서드를 호출 한 다음 Response.WriteFile(filename)을 사용하여 파일을 스트리밍합니다. 아마도 ContentType 속성을 먼저 설정해야 할 것입니다. 그리고 (나쁜 소식이 있습니다.) web.config 파일의 항목이 작동하지 않는 경우에도 여전히 선언적 또는 필수 액세스 확인을 수행해야 할 수 있습니다. 자신의 처리기 작성에 대한 자세한 내용은 Custom ASP.NET Processing with HTTP을 참조하십시오. 각 콘텐츠 유형에 대해 별도의 처리기를 만드는 것이 좋습니다. 한 번 작성하면 쉽게 만들 수 있습니다. 당신은 을 시도 할 수

추가 < 인증 > 요소가의 Web.config 파일에 < httpHandlers에게 > 요소를 추가 (자신이 시도하지 않은 참조) - <이를 제거 > 요소를 제거 사용 HttpHandler를 상속하고 다른 클래스를 하위 폴더 수준에 추가합니다 (아마도 같은 클래스를 가리키고 있을까요?). 이 방법이 효과가 있을지 모르지만 한 번 사용해 볼 가치가 있습니다.

마지막으로,이 모든 작업을 수행하고 싶지 않으면 IIS에 확장 매핑을 추가하면됩니다. 예를 들어, How to: Register HTTP Handlers을 살펴보면 .jpg 파일에 대한 매핑을 aspnet_isapi.dll에 추가 할 수 있습니다 (aspx에 대한 기존 매핑을 살펴보십시오).

<add path="*" verb="GET,HEAD,POST" type="System.Web.DefaultHttpHandler" validate="true"/> 

이 귀하의 사이트에 매우 심각한 성능 문제가 발생할 수 있습니다 : 기계 수준의 Web.config 이미이 항목을 포함하고 있기 때문에 당신은 당신의 Web.config에 HttpHandler를 요소를 추가 할 필요가 없습니다.

+0

HttpHandlers에 대한 장을 다시 읽고 시도해보십시오. 도와 주셔서 정말 고맙습니다. – SourceC