2014-07-17 44 views
1

我不確定我的問題在表面上是否有意義,所以讓我試一試。目前,我嘗試和檢查,如果一個網站已經在IIS中創建一個新的DirectoryEntry存在:IIS元數據庫是否以Id升序返回站點?

DirectoryEntry IISWebsites = new DirectoryEntry(MetaBasePath); 

MetaBasePath定義前面爲:

private const string MetaBasePath = "IIS://Localhost/W3SVC"; 

我檢查IISWebsites孩子在foreach循環和公正想知道這是否會按照Id順序通過孩子?從我讀過的這個實際上存儲在DirectoryEntry的'Name'屬性中。

我問的原因是,如果用戶在我的web安裝項目中輸入的網站名稱沒有找到,那麼我想返回最高的ID,所以我可以添加1到它並創建一個名稱爲新的網站由用戶提供。

已經用我的IIS測試過了,它似乎按照這個順序返回,但我需要確定。

編輯

我發現微軟的支持(http://support.microsoft.com/kb/240941)以下:

注意,元數據庫中搜索的配置信息時, 它從底部枚舉,或子項,頂部或節點。

這似乎暗示它確實做了我的想法,但它不是100%清楚它是否適用於網站Id,因爲我不知道這與子項關聯如何。

回答

0

該文檔沒有專門定義網站ID的順序,所以假設它總是按這種方式排序並不安全(特別是當您的當前應用程序最終與新版本的.NET/Windows/IIS一起使用時在將來)。

最有可能的網站數量不夠大,以至於列舉他們發現最大值不會是瓶頸。

即便如此,您可以運行網站搜索並使用DirectorySearcher.Sort指定訂單。

請注意,關於您的編輯以及枚舉配置信息的方式與排序順序無關。從語境中去掉的一句話並不那麼清楚。在整個段落的背景下閱讀它,很明顯,枚舉行爲與元數據庫屬性繼承有關。

+0

好的,謝謝。 DirectorySearcher.Sort看起來像我需要在處理我的foreach循環之前以正確的順序得到它。你對我的編輯也是絕對正確的。我正在閱讀,以確保我找到了所有與我的問題有關的有效信息,並認爲我在提問後突然發現了我的答案。 – sr28

相關問題