簡體   English   中英

在IIS 6.0中的子目錄中創建虛擬目錄(以編程方式)

[英]Creating virtual directories in sub directories in IIS 6.0 (programmatically)

我試圖以編程方式在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 =“文件夾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;
        }

對我來說,這很丑陋。 有沒有更好的方法可以檢查子文件夾中是否存在現有的虛擬目錄?

您是否正在尋找遞歸函數來迭代整個站點?

public static void Main() {
    var siteRoot = new DirectoryEntry("IIS://<servername>/W3SVC/2/Root");
    var containsVirtualDirectory = ContainsVirtualDirectory(siteRoot);
}

private static Boolean ContainsVirtualDirectory(DirectoryEntry container) {
    foreach (DirectoryEntry child in container.Children) {
        if (child.SchemaClassName == "IIsWebVirtualDir")
            return true;

        if (child.SchemaClassName == "IIsWebDirectory" && ContainsVirtualDirectory(child))
            return true;
    }

    return false;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM