在我的网络应用程序中,以下调用在应用程序启动期间提前返回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
。
我使用Process Monitor进行了检查,发生的文件系统操作对于正确和错误的结果是相同的。
任何人都知道什么可以打破DirectoryExists()
(和BT FileExists()
同样发生?