상용 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 계정을 사용하여 실행됩니다. 파일 공유 디렉토리에 대한 '수정'권한이 있음을 확인했습니다.
어떤 종류의 서버 구성 또는 사용 권한 조건이이 오류를 유발할 수 있습니까? 나는 여러 가지 테스트를 혼자서 해 냈고 그것을 재현 할 수도 없다.
디렉터리 이동이란 원래 디렉터리와 해당 파일을 삭제하는 것을 의미합니다. 충분한 권한이 없거나 원래 디렉토리의 파일이 "open"이면 실패합니다. 아니면 그 두 번째 부분 일 수도 있습니다. –
파일을 사용하는 해당 사용자 컴퓨터의 바이러스 백신이 될 수도 있습니다 ... 항상 실패합니까? 탐색기로 파일을 수동으로 이동하려고하면 무엇을 얻게됩니까? – Phil1970