2014-05-23 3 views
-1

데이터베이스의 사용 권한을 검사하여 파일 집합에 액세스 할 수있는 HTTPHandler가있는 기존 웹 응용 프로그램이 있습니다.처리기에서 "액세스가 거부되었습니다."라고 말한 처리중인 파일에 액세스

개발 중에는 정상적으로 작동합니다.

하지만 생산시에는 만 로컬 호스트에서 작동합니다. 파일에 액세스하려고 시도하는 다른 모든 컴퓨터는 예외를 throw합니다.

경로 'G : \ Sites \ Portal \ Portals \ 0 \ attachments'에 대한 액세스가 거부되었습니다. 행에서

:

Dim bufferArquivo As Byte() = IO.File.ReadAllBytes(request.PhysicalPath) 

그것은 파일이있는 폴더에 대한 액세스를 거부,하지만 난 그게 모두에 모든 권한을 가지고 을 확인했습니다.

저는 가장을 사용하지 않기 때문에 가능하다고 생각합니다. 그렇다면 어떻게 구현할 수 있습니까?

IIS6에서 II7로 웹 사이트를 마이그레이션 한 후에 발생합니다. (iis6에서 작동, iis7에서는 작동하지 않음)

+0

내가 왜 downvote를 물어 봐도 될까요? –

답변

0

정확하게 모르겠지만 IIS7로 마이그레이션하기 전에 request.PhysicalPath은 전체 파일 이름 경로 (전체 경로 + 파일 이름)를 반환하고 있습니다. 그 후 파일을 담고있는 폴더 (전체 경로) 만 유치하고있었습니다. 나는 파일 이름을 request.PhysicalPath에 삽입해야합니다.

Dim filename As String = request.Path.Substring(request.Path.LastIndexOf("/") + 1) 
Dim bufferArquivo As Byte() = IO.File.ReadAllBytes(request.PhysicalPath + "\" + filename) 
1

ApplicationPool에서 응용 프로그램을 사용하는 사용자를 확인하십시오. ApplicationPoolIdentity로 설정된 경우 ApplicationPoolIdentity가 매핑되는 사용자를 검색해야합니다.

또한 Identity를 NetworkService로 설정하고 NetworkService에 해당 폴더에 대한 읽기 권한을 부여 할 수도 있습니다. 여러 서버에서 100 % 저를 위해 일했습니다.

+0

"NetworkService"에 ID를 설정한다고 가정하면 가장을 사용 하시겠습니까? –

+0

여전히 작동하지 않거나 HTTP 처리기 등록과 관련 될 수 있습니까? –