2009-10-05 10 views

답변

38

App_Data 폴더는 데이터베이스 파일과 같은 데이터 용으로 예약 된 특수 폴더이며 이 아니며은 웹의 모든 콘텐츠를 렌더링합니다. 이것은 의도적으로 설계된 것이며 의도적이며 변경할 수 없습니다 (아는 한).

이미지가 App_Data 하위 폴더에 속하지 않으므로 /images 폴더 나 더 적절한 것으로 지정하십시오.

8

이미지는 App_Data 폴더에 저장하면 안됩니다. .mdb 데이터베이스 파일과 같이 사용자에게 직접 제공해서는 안되는 파일에 대해 예약되어 있습니다.

/Resources 또는 /Resources/Images 폴더를 사이트 루트에서 만들 것입니다.

+0

감사합니다 Chris ... –

+0

안녕하세요,하지만 문제는 루트에서 '/ Resources/Images'폴더를 만들려고 할 때 오류가 발생했습니다. (IIS에서 호스팅되는 사이트 인 경우). 가장 좋은 방법은 전체 루트 디렉토리에 대한 사용자 계정 권한을 부여하는 IIS 사용자 계정 w./o에 대한 루트 디렉토리를 만드는 것인가? 가능합니까? 루트에 디렉토리를 만들려고 할 때 액세스 거부 오류가 발생합니다. . – Sagar

3

자, 불가능할 시간 ... app_data 폴더에서 직접 이미지를로드 할 수없는 동안 app_data 폴더에서 이미지 파일을 읽고 클라이언트에게 다시 보낼 고유 한 http 핸들러를 작성할 수 있습니다. 해결 방법이 있지만 일반적으로 데이터는 응용 프로그램에서만 읽을 수있는 데이터를위한 것입니다. 처리기가 데이터를 읽음으로써 해당 이미지를 반환 할 수 있습니다.

하지만 나에게 도움이된다면 즉시 해고 될 것입니다.

+2

app_data에서 이미지를 제공 할 수 있도록 asp.net을 우회하는 방법을 통해 생각조차도 나쁜 생각입니다 ... –

+0

아이디어를 공유해 주셔서 감사합니다. –

+2

@Chris, 동의합니다! 나 자신을 해고 할거야! ;-) –

4

나는 동의하지 않습니다. App_Data 폴더에 이미지를 숨기고 자신의 http-handler를 만들 때 이미지를 보호하고 이미지를 표시하기 전에 이미지에 저작권 텍스트 등을 추가 할 수 있습니다.

나는 고화질 사진을 가지고 있는데 모두들 얻지 못하고 http-handler를 이미지 크기를 줄이고 일부 copyrighttext를 달았습니다. 큰!

0

App_Data 폴더의 내용은 직접 처리 할 수는 있지만 직접 처리 할 수는 없습니다.
직접 액세스가 불가능하며 간접적 인 사용은 권장되지 않습니다. 의도적입니다.

그러나 가상 경로를 추가하면이 작업을 수행 할 수 있습니다. 이 question


내가 생각하는 참조 세 가지 대답은 당신의 목적을 제공합니다.
리소스 폴더에 이미지를 글로벌 또는 로컬로 저장합니다. 이들은 또한 특수 폴더이며 컨텐츠는 프로그래밍 방식으로 액세스 할 수 있습니다.

0

다릅니다. ;)

App_Data에 이미지를 저장하는 데는 충분한 이유가 있습니다. 사용자가 파일이나 로고를 업로드 할 수있는 상황에서는이 파일을 보호하고 다른 사용자가 액세스 할 수 없도록하거나 공개하지 않습니다.

가장 중요한 점은 서버/배포 인스턴스별로 서로 다른 파일을 사용하는 유일한 방법입니다.

앱을 배포 할 때 배포 구성에서 "App_Data에서 파일 제외"를 사용하도록 설정하여 서버 인스턴스별로 사용자가 업로드 한 파일을 보호 할 수 있습니다.

url을 사용하여 이러한 파일에 액세스하려는 경우 다운로드 핸들러 인 downloadfile.ashx를 사용하십시오.

희망이 도움이됩니다.

관련 문제