您正在尋找ServerManager(Microsoft.Web.Administration),其提供的讀寫訪問IIS 7.0配置系統。
迭代Microsoft.Web.Administration.SiteCollection,使用Site Object獲取對您的網站的引用並讀取Name屬性的值。
// Snippet
using (ServerManager serverManager = new ServerManager()) {
var sites = serverManager.Sites;
foreach (Site site in sites) {
Console.WriteLine(site.Name); // This will return the WebSite name
}
您還可以使用LINQ查詢ServerManager.Sites集合(見下例)
// Start all stopped WebSites using the power of Linq :)
var sites = (from site in serverManager.Sites
where site.State == ObjectState.Stopped
orderby site.Name
select site);
foreach (Site site in sites) {
site.Start();
}
注意:Microsoft.Web.Administration工作僅與IIS7。
對於IIS6,您可以同時使用ADSI和WMI來做到這一點,但我建議您選擇比ADSI更快的WMI。如果使用WMI,請看WMI Code Creator 1.0(由Microsoft開發/免費開發)。它會爲你生成代碼。
HTH
你能否解釋多一點的動機是什麼? – 2009-10-31 16:20:44
我正在爲我編寫的Web應用程序授權,我需要確保每個Web應用程序只使用一次許可證密鑰,即使在同一臺服務器上也是如此。該Web應用程序與分配給IIS站點的多個域名一起工作,因此將該密鑰綁定到該站點的域名不會。 在同樣徒勞的綁定中,機器名稱的關鍵字不會執行任何操作,因爲我的應用程序可能安裝在同一臺機器上的多個客戶機上。 總之,我需要在特定機器上唯一標識IIS網站的內容。由於IIS不允許具有相同名稱的多個站點,我認爲這是要走的路。 – 2009-10-31 16:25:17
我不是故意冒充居高臨下,我只是好奇爲什麼有人會想這樣做。 – 2009-10-31 16:25:41