在我的网络应用程序中,以下调用在应用程序启动期间早期返回 true,然后出于任何原因稍后返回 false:
HostingEnvironment.VirtualPathProvider.DirectoryExists("~/some/existing/directory")
该文件夹存在,同时以下代码始终正确返回 true:
System.IO.Directory.Exists(HostingEnvironment.MapPath("~/some/existing/directory"))
我不知道什么会影响 VirtualPathProvider 改变行为。VirtualPathProvider 在应用程序开始时被覆盖并使用自定义实现但不会覆盖 DirectoryExists() 并且实际调用的方法一直是System.Web.Hosting.MapPathBasedVirtualPathProvider
.
我检查了进程监视器,发生的文件系统操作对于正确和错误的结果是相同的。
任何人都知道什么会破坏DirectoryExists()
(顺便说一句,同样会发生FileExists()
)?