2011-10-01 3 views
2

현재 IIS에서 httphandlers로 고심하고 있습니다. VS2010 및 Cassini의 .NET4 웹 사이트를 개발하고 있습니다. 이 웹 사이트에는 그림이 내 처리기를 통해로드되는 갤러리가 있습니다. 예 : http://mywebsite.com/Gallery/123/Pic1.jpg My HTTP 처리기는 ID 123을 가져 와서 데이터베이스에서 그림을 반환합니다 (단순화).IIS6 또는 IIS7 클래식 모드의 HTTP 처리기

그래서 모든 것이 Cassini (VS 통합 웹 서버)와 IIS7의 "통합 모드"에서 잘 작동합니다. 사진은 꼭로드해야합니다.

하지만이 사이트는 IIS6을 사용하는 공유 호스팅 업체에 배포해야합니다.

많은 검색 및 자체 로깅을 수행 한 후 요청이 처리기로 라우팅되지 않아 IIS에서 404가 발생합니다. IIS7 통합 모드에 대한 충분한

내 정의 : 클래식 모드에서 IIS7를 들어

<system.web> 
    <handlers> 
     <add verb="*" path="Gallery/*/*" type="[coorect Type spec]" /> 
    </handlers> 
</system.web> 

나는이 마지막 설정은 모듈과 scriptprocessor에 물건 아 파크 작동

<system.webServer> 
    <handlers> 
     <add name="ImageHandler" verb="*" path="Galler</*/*" type="[type]" modules="IsapiModule" scriptProcessor="c:\windows\Microsoft.net\framework\v4.0.30319\aspnet_isapi.dll"/> 
    </handlers 
</system.webServer> 

를 추가했다 속성 ...

그러나 IIS6에서는이 구성이 작동하지 않습니다 ....

아무도 도와 줄 수 있습니까?

+0

해결책을 찾았습니까? –

답변

0

IIS6는 일반적으로 파일 확장명을 사용하여 요청을 전달할 ISAPI 처리기를 결정합니다. 따라서 .jpg을보고 해당 경로에서 정적 파일을 제공하려고합니다. 또한 IIS7이 클래식 모드라고합니다. 그리고 당신은 당신이 이것을 처리해야한다는 것을 알아야하기 때문에 aspnet_isapi.dll을 당신의 구성에서 참조하고 있음을 주목할 것입니다. 일단 aspnet_isapi에 전달하면 asp.net http 처리 파이프 라인이 시작되어 처리기를 실행할 수 있습니다.

가장 쉬운 해결 방법은 IIS7을 지원하는 호스트를 찾는 것입니다. 그렇지 않으면 URL 재 작성 옵션이 있는지 확인할 수 있습니다. 그것으로, IIS6가 그것을 잡아서 asp.net 파이프 라인에 넣고 처리기가 작동하게하는 url에 .ashx를 추가 할 수 있도록 일을 다시 작성할 수 있습니다. 와일드 카드 매핑을 허용하는지 확인할 수도 있지만 대부분의 공유 호스트에 대해서는 매우 어려운 순서입니다.