30

Does anybody know how to programmatically get the sites list and virtual dirs in IIS 7?

John Saunders
  • 160,644
  • 26
  • 247
  • 397
tartakynov
  • 2,768
  • 3
  • 26
  • 23

2 Answers2

70

Check out this post - seems to be a brand-spanking new management API in the Microsoft.Web.Administration namespace:

Link

Here's a quick graphical overview from that blog post:

alt text
(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
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

Community
  • 1
  • 1
Jeremy
  • 363
  • 1
  • 6