2016-11-04 2 views
1

상용 ASP.NET 응용 프로그램을 수백 대의 서버에서 실행하고 있습니다. 한 고객이 응용 프로그램에서 UNC 구문을 통해 액세스하는 파일 공유의 디렉터리를 이동하려고 할 때 아래 오류가 발생합니다.디렉터리의 Directory.Move 결과가 비어 있지 않습니다. 오류

System.IO.IOException: The directory is not empty. 

스택 추적 :

at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 
at System.IO.Directory.InternalMove(String sourceDirName, String destDirName, Boolean checkHost) 
at GalleryServer.Business.AlbumSaveBehavior.PersistToFileSystemStore(IAlbum album) 
at GalleryServer.Business.AlbumSaveBehavior.Save() 
at GalleryServer.Business.GalleryObject.Save() 
at GalleryServer.Business.Album.MoveTo(IAlbum destinationAlbum) 
at GalleryServer.Web.Controller.AlbumController.TransferToAlbum(Int32 destinationAlbumId, GalleryItem[] itemsToTransfer, GalleryAssetTransferType transferType, GalleryItem[] createdGalleryItems) 
at GalleryServer.Web.Api.AlbumsController.TransferTo(Int32 destinationAlbumId, GalleryItem[] itemsToTransfer, GalleryAssetTransferType transferType) 

코드는 다음 (간체)처럼 보이는 : 나는 디렉토리가 비어있을 때 코드가 성공 있음을 유의

var sourceDir = @"\\server\storage\folder1"; 
var destDir = @"\\server\storage\folder2"; 

System.IO.Directory.Move(sourceDir, destDir); 

. 그것은 파일을 포함하고 실제로 다른 고객을 위해 작동 할 때 작동합니다.

ASP.NET 응용 프로그램은 IIS에서 응용 프로그램 풀 ID에 대한 AD 계정을 사용하여 실행됩니다. 파일 공유 디렉토리에 대한 '수정'권한이 있음을 확인했습니다.

어떤 종류의 서버 구성 또는 사용 권한 조건이이 오류를 유발할 수 있습니까? 나는 여러 가지 테스트를 혼자서 해 냈고 그것을 재현 할 수도 없다.

+1

디렉터리 이동이란 원래 디렉터리와 해당 파일을 삭제하는 것을 의미합니다. 충분한 권한이 없거나 원래 디렉토리의 파일이 "open"이면 실패합니다. 아니면 그 두 번째 부분 일 수도 있습니다. –

+0

파일을 사용하는 해당 사용자 컴퓨터의 바이러스 백신이 될 수도 있습니다 ... 항상 실패합니까? 탐색기로 파일을 수동으로 이동하려고하면 무엇을 얻게됩니까? – Phil1970

답변

0

답변을 시도해 볼 수 있습니까? here on SO? 대답은 내부 기능에 대한 제한을 극복하고 훨씬 안전합니다.

관련 문제