您正在寻找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