Я пытаюсь создать виртуальные каталоги в IIS 6.0 программным способом и у меня возникают проблемы с проверкой, существует ли виртуальный каталог, если виртуальный каталог находится во вложенной папке.
Так что, если у меня есть дерево папок, такое как:
MySite
Folder A (virtual directory)
Folder B
NestedFolder C (virtual directory)
Когда я беру объект DirectoryEntry для этой метабазы сайта:
"IIS://<servername>/W3SVC/2/Root"
Объект DirectoryEntry (назовем его entry) будет иметь двух детей, с
entry.Children[0].Name = "Folder A"
но entry.Children [1] .Name = "Папка 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;
}
Что для меня довольно безобразно. Есть ли лучший способ проверить наличие виртуальных каталогов, если они существуют в подпапках?