C # ASP Directory существует истина, когда это не так - PullRequest
1 голос
/ 07 июня 2019

У меня проблема с проверкой 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)), когда каталог не существует?

Я очень смущен и надеюсь, что кто-то может объяснить, что происходит.

...