I run Windows Server 2003 as my dev server at work, so I’m used to having the ability to run multiple web sites (main branch on 80, debug build on 88, another project on 8080, etc… ) in fact, I’m not just used to it… I’m spoiled by it. I don’t like developing or debugging in a vroot, when I know the final app will be living at the root. I don’t like using Cassini if the final app will be running in IIS (they are different in many important ways, such as the file types that end up going through the ASP.NET handlers). So, when it is time to do dev work on my own projects (this blog, my main site, my new book site, my work on the SubText project, etc.), I really really want to have each of them up as their own site. In some cases, this is critical, such as when I recently was working on moving my main site and my new book site up to the 2.0 version of the Framework, but my blog has to stay on 1.1 (for now). In that case, trying to shuffle around vroots and settings to simulate the production environment would be very difficult.

The ideal solution, from the point of view of my dev projects, would be to run Windows Server 2003 at home on my personal dev box, but (putting aside from the cost issue for a moment) my home machine runs Media Center Edition 2005, so that just isn’t an option for me. You can use vbscript to create multiple sites on XP Pro, but only one can run at a time so you need to toggle which site is running when you want to switch projects. Enter IIS Admin, an app that not only takes care of the script to create new sites (it allows the creation of new sites with a simple button press) but it also provides a UI for switching between active sites. I don’t even need to turn off the currently running instance, just tell IIS Admin to start one and it stops the others automatically.

It isn’t the same as running Windows Server, and it doesn’t get around the XP limit of one site running at a time, but it works great for me and saves me a ton of time manually moving files and/or changing settings in the IIS management console.