我正在尝试以编程方式在 IIS 6.0 中创建虚拟目录,并且如果虚拟目录位于嵌套文件夹中,则在检查虚拟目录是否存在时遇到问题。
因此,如果我有一个文件夹树,例如:
MySite
Folder A (virtual directory)
Folder B
NestedFolder C (virtual directory)
当我获取此站点元数据库的 DirectoryEntry 对象时:
"IIS://<servername>/W3SVC/2/Root"
DirectoryEntry 对象(将其称为条目)将有两个子对象,其中
entry.Children[0].Name = "Folder A"
但是 entry.Children[1].Name = "Folder B" 这不是虚拟目录。我必须执行以下(代码)才能访问嵌套文件夹中的任何虚拟目录:
foreach (var directoryEntry in entry.Children.Cast<DirectoryEntry>().Where(directoryEntry => directoryEntry.SchemaClassName == "IIsWebVirtualDir" || directoryEntry.SchemaClassName == "IIsWebDirectory")) {
foreach (DirectoryEntry child in directoryEntry.Children.Cast<DirectoryEntry>().Where(subChild => subChild.SchemaClassName == "IIsWebVirtualDir")) {
if (child.Name == vDir)
return true;
}
if (directoryEntry.Name != vDir) continue;
return true;
}
这对我来说很丑陋。如果它们存在于子文件夹中,是否有更好的方法可以检查现有的虚拟目录?