Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to programmatically get sites list and virtual dirs in IIS 7?

Tags:

c#

.net

iis-7

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

like image 672
tartakynov Avatar asked Mar 31 '10 18:03

tartakynov


People also ask

How do I find virtual directory in IIS?

Hold down the Windows key, press the letter X, and then click Control Panel. Click Administrative Tools, and then double-click Internet Information Services (IIS) Manager.

How do I use virtual directory in IIS?

In the Internet Information Services window, expand server name (where server name is the name of the server). Right-click the Web site that you want (for example, Default Web Site), point to New, and then click Virtual Directory. On the Welcome to the Virtual Directory Creation Wizard page, click Next.

What is the difference between virtual directory and application in IIS?

Virtual directories and applications are now separate objects, and they exist in a hierarchical relationship in the IIS configuration schema. Briefly, a site contains one or more applications, an application contains one or more virtual directories, and a virtual directory maps to a physical directory on a computer.


2 Answers

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

http://blogs.msdn.com/carlosag/archive/2006/04/17/MicrosoftWebAdministration.aspx

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

alt text

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();     } 
like image 157
marc_s Avatar answered Oct 09 '22 02:10

marc_s


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

like image 42
Jeremy Avatar answered Oct 09 '22 02:10

Jeremy