【发布时间】:2013-04-18 03:24:04
【问题描述】:
我试图首先列出所有 IIS 网站以及每个网站中的文件夹/虚拟 Web 目录(在树视图中)。然后,我想允许用户选择上述任何节点并在那里创建一个新的虚拟 Web 目录。如果我知道我打算使用的路径,我可以创建一个虚拟 Web 目录,但我无法获得网站中的文件夹/虚拟 Web 目录的列表(我可以获得网站列表)。
【问题讨论】:
我试图首先列出所有 IIS 网站以及每个网站中的文件夹/虚拟 Web 目录(在树视图中)。然后,我想允许用户选择上述任何节点并在那里创建一个新的虚拟 Web 目录。如果我知道我打算使用的路径,我可以创建一个虚拟 Web 目录,但我无法获得网站中的文件夹/虚拟 Web 目录的列表(我可以获得网站列表)。
【问题讨论】:
使用 System.DirectoryServices 从 IIS 获取网站。您可以在以下网址找到类似的讨论
http://channel9.msdn.com/forums/TechOff/78084-Extracting-list-of-web-sites-from-IIS-manager/
【讨论】:
有趣的是,我只是需要为 IIS 7.5 执行此操作,我创建了一个具有我想要的主要属性的类 IisSiteApplication
using Microsoft.Web.Administration;
public class IisSiteApplicationList : List<IisSiteApplication>
{
public IisSiteApplicationList()
{
ServerManager iisManager = new ServerManager();
SiteCollection sites = iisManager.Sites;
foreach (Site iisSite in sites)
{
foreach (Application iisApp in iisSite.Applications)
{
IisSiteApplication app = new IisSiteApplication
{
SiteId = iisSite.Id,
SiteName = iisSite.Name,
AppName = iisApp.ToString(),
ApplicationPoolName = iisApp.ApplicationPoolName,
Directories =
String.Join(";", iisApp.VirtualDirectories.Select(a => a.PhysicalPath).ToArray())
};
Add(app);
}
}
}
}
【讨论】: