Does anybody know how to programmatically get the sites list and virtual dirs in IIS 7?
Asked
Active
Viewed 2.6k times
30
-
Is this still an issue? If not mark one of the below as an answer. – ΩmegaMan Jan 04 '19 at 15:15
2 Answers
70
Check out this post - seems to be a brand-spanking new management API in the Microsoft.Web.Administration
namespace:
Here's a quick graphical overview from that blog post:
(source: carlosag.net)
And here's a "The Gu" post on Cool new IIS7 Features and APIs
Something like this will find all the sites, their application and their virtual directories in your IIS7 server:
static void Main(string[] args)
{
ServerManager mgr = new ServerManager();
foreach(Site s in mgr.Sites)
{
Console.WriteLine("Site {0}", s.Name);
foreach(Application app in s.Applications)
{
Console.WriteLine("\tApplication: {0}", app.Path);
foreach(VirtualDirectory virtDir in app.VirtualDirectories)
{
Console.WriteLine("\t\tVirtual Dir: {0}", virtDir.Path);
}
}
}
Console.ReadLine();
}

Glorfindel
- 21,988
- 13
- 81
- 109

marc_s
- 732,580
- 175
- 1,330
- 1,459
-
20The best way to thank Marc would be to accept his excellent answer. – Mitch Wheat May 12 '12 at 01:01
-
3
One important caveat to using the Microsoft.Web.Administration assembly is the code has to be running on a machine that has IIS7 installed.
When I was developing a system to load IIS7 sites into a webpage on my windows XP machine I discovered this limitation. The API is great, I just wished I could have used it.
Control IIS 7 server from Windows 2003 server programmatically