萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> 編程語言綜合 >> C#創建IIS虛擬目錄的方法

C#創建IIS虛擬目錄的方法

   本文實例講述了C#創建IIS虛擬目錄的方法。分享給大家供大家參考。具體分析如下:

  DirectoryEntry是.Net給我們的一大禮物,他的名字我們就知道他的功能--目錄入口。使用過ADSI的人都知道操作IIS,WinNT這些時,我們還需要提供他們的Path,操作IIS時,這個Path的格式為:

   代碼如下:

  IIS://ComputerName/Service/Website/Directory

  ComputerName:即操作的服務器的名字,可以是名字也可以是IP,經常用的就是localhost

  Service:即操作的服務器,IIS中有Web,也有FTP,還有SMTP這些服務,我們主要是操作IIS的Web功能,因此此處就是"W3SVC",如果是FTP則應是"MSFTPSVC"

  WebSite:一個IIS服務中可以包括很多的站點,這個就用於設置操作的站點。他的值是一個數字,默認是1,表示缺省站點,如果有其它,則從1開始依次類推。

  Directory:不用說,即操作的目錄名稱,一個站點一般頂層目錄為"ROOT",其它目錄則是他的孩子(Child)。

  首先我們獲取一個站點的頂層目錄(根目錄):

   代碼如下:

  DirectoryEntry rootfolder = new DirectoryEntry("IIS://localhost/W3SVC/1/ROOT");

  如果我們創建這個對象是沒有發生異常,則表示這個目錄是真實存在的。

  下面我們來添加新的虛擬目錄,比如我們要加的是"Aspcn":

  ?

1 2 3 4 DirectoryEntry newVirDir = rootfolder.Children.Add("Aspcn","IIsWebVirtualDir"); newVirDir.Invoke("AppCreate",true); newVirDir.CommitChanges(); rootfolder.CommitChanges();

  創建目錄的思路很簡單,即在根目錄的子集(rootfolder.Children)中再添加一條記錄,這裡使用的是DirectoryEntries類中的Add方法,它返回的是一個DirectoryEntry,表示新加入的目錄,第一個參數是虛擬目錄的名字,第二個則是Schema的類名以表明我們加入的目錄類型。然後再使用DirectoryEntry的Invoke方法,調用ADSI中的"AppCreate"方法將目錄真正創建(似乎不走這一步也可以創建目錄成功,但是為了保險起見,大家還是用吧),最後便是依次調用新、根目錄的CommitChanges方法,確認此次操作。

  在創建新目錄時,我們也可以同時給這個目錄的屬性賦值,但是我的實戰經驗告訴我,最好不要這樣做,如果創建時就賦值,將有很多屬性不能賦值成功,比如重要的表示真實目錄的Path屬性。因此飛刀建議大家最好是先創建目錄,然後再賦值,即更新目錄信息。

  更新虛擬目錄

  相信大家對IIS都比較熟悉,了解IIS中一些重要的設置,如可讀(AccessRead)、可寫(AccessWrite)、可執行(AccessExecute)等。這些都可通過對DirectoryEntry的Properties屬性集合的賦值來實現。賦值可以通過兩種方式來完成:

  第一種是調用Properties集合的Add方法,如:

   代碼如下:

  dir.Properties["AccessRead"].Add(true);

  第二種是對第一個索引值賦值:

  代碼如下:

  dir.Properties["AccessRead"][0] = true;

  這兩種方法都是可行的。具體是要看你的喜好了。

  在進行賦值之前我們還是要確定要要賦值的目標吧:)這裡我們使用DirectoryEntries類的Find方法,如:

   代碼如下:

  DirectoryEntry de = rootfolder.Children.Find("Aspcn","IIsVirtualDir");

  找到了,我們就可以賦值了。賦值時一定要好好看看啊,虛擬目錄的屬性值可以超多,一查一大堆。。:(太多了,飛刀我也不重復了,大家去微軟的站點上查:)

  比較常用的有:

  AccessRead,AccessWrite,AccessExecute,AccessScript,DefaultDoc,EnableDefaultDoc,Path

  刪除虛擬目錄

  刪除虛擬目錄的方法也很簡單,就是找到你要刪除的虛擬目錄,然後調用AppDelete方法。

  ?

1 2 3 DirectoryEntry de = rootfolder.Children.Find("Aspcn","IIsVirtualDir"); de.Invoke("AppDelete",true); rootfolder.CommitChanges();

  還有一種方法,就是調用Root目錄的Delete方法。

  ?

1 2 3 4 5 6 object[] paras = new object[2]; paras[0] = "IIsWebVirtualDir"; //表示操作的是虛擬目錄 paras[1] = "Aspcn"; rootfolder.Invoke("Delete",paras); rootfolder.CommitChanges(); System.DirectoryServices.DirectoryEntries

  IIs創建虛擬目錄

  ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 using System; using System.Collections.Generic; using System.Text; using System.DirectoryServices; namespace Install_IIS { class IISManager { public IISManager() { } /// <summary> /// 創建虛擬目錄 /// </summary> /// <param name="WebSite">服務器站點名稱</param> /// <param name="VDirName">虛擬目錄名稱</param> /// <param name="Path"></param> /// <param name="RootDir"></param> /// &
copyright © 萬盛學電腦網 all rights reserved