Voici mon code que j'utilise pour extraire un fichier zip en vous assurant le répertoire cible n'a pas de fichiers sales dans cePourquoi parfois Directory.CreateDirectory échoue?
internal void UnzipProject()
{
if (Directory.Exists(SourceDir))
Directory.Delete(SourceDir, true);
if (File.Exists(CodeZipFile))
{
Directory.CreateDirectory(SourceDir); // fails here
ZipFile.ExtractToDirectory(CodeZipFile, SourceDir);
}
}
Quelque temps Directory.CreateDirectory(SourceDir)
ne parvient pas à créer un nouveau répertoire et je reçois exception sur la même ligne mais si je recule et réessaye la création de dir, cela fonctionne. Exactement le même motif est répété lors de la prochaine exécution.
EDIT
est ici l'exception qui est en fait de ne pas avoir été dir créé, je peux voir le src dir n'existe pas:
System.UnauthorizedAccessException was unhandled
HResult=-2147024891
Message=Access to the path '(...MyPath...)\src\MySolution.sln' is denied.
Source=mscorlib
StackTrace:
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at System.IO.Compression.ZipFileExtensions.ExtractToFile(ZipArchiveEntry source, String destinationFileName, Boolean overwrite)
at System.IO.Compression.ZipFileExtensions.ExtractToDirectory(ZipArchive source, String destinationDirectoryName)
at System.IO.Compression.ZipFile.ExtractToDirectory(String sourceArchiveFileName, String destinationDirectoryName, Encoding entryNameEncoding)
at System.IO.Compression.ZipFile.ExtractToDirectory(String sourceArchiveFileName, String destinationDirectoryName)
........
Quelle est l'exception que vous obtenez * « parfois » * – Habib
À quelle fréquence avez-vous exécuter cette méthode? Une fois par heure, une fois par minute, 1000 fois par seconde? – Oxoron
Exécution de cette méthode, au démarrage de l'application uniquement. En production il peut être rappelé une fois en plusieurs minutes – WSK