.netiismetabase

Is there a .NET Library or API to interact with/Edit the IIS Metabase?


...or am I stuck rolling my own "XML chopping" functions. I'd like to create a small tasktray app so I can quickly re-point a Virual Directory to one of several of folders on my harddisk.

Bit of background:

I have 3 different svn branches of our code base on my dev machine.

Current Production Branch    ( C:\Projects\....\branches\Prod\ )
Next Release Canidate Branch ( C:\Projects\....\branches\RCX\ )
Trunk                        ( C:\Projects\....\trunk\ )

Our app integrates with a 3rd party CMS which I've installed at

http://localhost/cms/

In order to work our app has to live at the same root directory. so:

http://localhost/app/

Depending on the branch I'm working on, I'm re-pointing the /app/ directory to one of the 3 paths listed above by going into IIS Manager. Just thought it'd be handy to have a quick-app to do it for me.


Solution

  • Ok...this isn't a tray app but you can run it from the command line. Just change the physical paths as necessary:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.DirectoryServices;
    
    namespace Swapper
    {
      class Program
      {
        static void Main(string[] args)
        {
          using (DirectoryEntry appRoot = 
                   new DirectoryEntry("IIS://Localhost/W3SVC/1/root/app"))
          {
            switch (args[0].ToLower())
            {
              case "prod":
                appRoot.Properties["Path"].Value = @"e:\app\prod";
                appRoot.CommitChanges();
                break;
    
              case "rcx":
                appRoot.Properties["Path"].Value = @"e:\app\rcx";
                appRoot.CommitChanges();
                break;
    
              case "trunk":
                appRoot.Properties["Path"].Value = @"e:\app\trunk";
                appRoot.CommitChanges();
                break;
    
              default:
                Console.WriteLine("Don't know");
                break;
            }
          }
        }
      }
    }
    

    Then run as in:

    C:\>swapper prod
    C:\>swapper rcx
    

    etc