2014-02-07 7 views
2

데이터베이스에서 이미지를 제공하는 처리기를 사용하고 있습니다. 처리기에 구성된 경로에 문제가 있습니다.폴더와 데이터베이스에서 이미지를 제공하는 처리기 경로를 구성하는 방법은 무엇입니까?

<add name="DbFileHandler" verb="*" path="/images/db/*" type="DbFileHandler" 
resourceType="Unspecified" allowPathInfo="true" /> 

우리가 구현하려는 흐름은 다음과 같습니다

1) 먼저 이미지 "/ 이미지/DB를"말할 폴더에서 요청됩니다. 폴더에 이미지를 포함하지 않는 경우, 핸들러는 표시의 DB 형태로 이미지를 가져 와서 폴더 또한 우리는 implemeted 한

이미지를 얻을 Imageresizer 라이브러리를 이미지를 기록하는라고

2) .

여기서 문제는 우리가 요청하는 경우 :

http://www.abc.com/images/db/101 - 핸들러가 호출

http://www.abc.com/images/db/image.jpg?width=200

- http://www.abc.com/images/db/image.jpg라고 폴더에서 이미지 - 다시 처리기 대신 폴더에서 이미지를 호출이라고합니다

http://www.abc.com/images/db/image.jpg에 대한 요청이 처리기로 전달되지 않고 대신 "/ images/db /"폴더에서 처리되도록 처리기를 구성하려면 어떻게해야합니까?

N.B : 나는 경로 같은 즉 http://www.abc.com/images/db/

답변

0

을 유지하고 싶은 당신은 IIS가/전체 표현 사용하고 있습니까? 그렇다면 IIS는 아마도 .jpg 확장자를 정적 파일로 처리하고 처리기를 우회 할 것입니다. 다음을 설정해야합니다.

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true" /> 
</system.webServer> 

이렇게하면 IIS가 정적 파일로 처리하지 않고 처리기를 실행할 수 있습니다.

그런 다음 이미지가 있는지 확인하고 IIS가 수행 할 디스크 이미지가있는 경우 수동으로 확인해야하지만 IIS가 발견되지 않으면 404을 반환합니다. 이미지 처리를 수행하고 이미지 데이터를 반환해야합니다.

0

Please read the ImageResizer Best Practices.

제대로 만 DiskCache를 사용해야하고 SqlReader plugin (또는 build your own provider) 및 ImageResizer 당신을 위해 요청을 차단하고 (제대로 스레드) 캐싱을 처리 할 ImageResizer 사용.

HttpModule 대신 HttpHandler를 사용하는 고유 한 성능 제한 외에도, 디스크 I/O를 조정할 수있는 스레딩 시스템을 구현하지 않는 한 많은 부하 및/또는 손상된 파일을 생성합니다.

여기에서 취하는 접근 방식을 다시 고려해 보길 강력히 권합니다.