Вот мой код, который я использую, чтобы извлечь почтовый файл убедившись, что целевая папка не имеет каких-либо грязных файлов в немПочему иногда Directory.CreateDirectory не работает?
internal void UnzipProject()
{
if (Directory.Exists(SourceDir))
Directory.Delete(SourceDir, true);
if (File.Exists(CodeZipFile))
{
Directory.CreateDirectory(SourceDir); // fails here
ZipFile.ExtractToDirectory(CodeZipFile, SourceDir);
}
}
Иногда Directory.CreateDirectory(SourceDir)
не удается создать новый каталог и я получаю исключение на следующей строке но если я отступлю и повторю попытку создания dir, это сработает. Точно такая же картина повторяется при следующем выполнении.
EDIT
Вот исключение, которое на самом деле о реж что не был создан, я могу видеть ЦСИ папка не существует:
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)
........
Что такое исключение, которое вы получите * «иногда» * – Habib
Как часто вы запускаете этот метод? Один раз в час, раз в минуту, 1000 раз в секунду? – Oxoron
Выполнение этого метода, только при запуске приложения. В производстве это можно вспомнить раз в несколько минут – WSK