У меня проблема с проверкой Directory.Exists
, которая всегда возвращает true, пока каталог не существует. По крайней мере, это мои предположения, основанные на журнале ошибок.
Примечание: проблема не возникает в локальной среде разработки, только в производственной среде.
Итак, для начала, вот сообщение об ошибке:
Message: Could not find a part of the path 'd:\home\site\wwwroot\media\cdn'.
Exception type: System.IO.DirectoryNotFoundException
Stack Trace:
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileSystemEnumerableIterator`1.CommonInit()
at System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost)
at System.IO.Directory.GetFiles(String path, String searchPattern)
at CMS.AzureStorage.Directory.GetFiles(String path, String searchPattern)
at CMS.IO.Directory.GetFiles(String path, String searchPattern)
at CMS.AzureStorage.DirectoryInfo.GetFiles(String searchPattern, SearchOption searchOption)
Связанные функции (урезаны до соответствующего фрагмента кода):
public override string[] GetFiles(string path, string searchPattern)
{
List<string> stringList = new List<string>();
if (Directory.ExistsInFileSystem(path))
{
foreach (string file in System.IO.Directory.GetFiles(path, searchPattern))
stringList.Add(Directory.GetCaseValidPath(file, new bool?()));
}
...
}
public static bool ExistsInFileSystem(string path)
{
return System.IO.Directory.Exists(path);
}
Как вы можете видеть, он достигает System.IO.Directory.GetFiles
, но я не понимаю, как обходится строка if (Directory.ExistsInFileSystem(path))
, когда каталог не существует?
Я очень смущен и надеюсь, что кто-то может объяснить, что происходит.