Most of the ASP.NET web applications that I’ve developed where built on Windows XP and deployed manually. Recently I used the Web Setup project in VS.NET 2003 to create an Windows Installer .msi file and deploy an ASP.NET SAP front-end to a Windows 2003 Server machine.
I had never come across the limitation of the Web Setup for multiple virtual server based IIS machines. Take any Internet Information Server machine that has multiple “Web Sites” aka virtual servers defined on it. Each of these web sites will probably filter incoming requests depending on IP address or host header name. When you try to install a web application to any Web Site in particular, you will come face to face with an important limitation of the Web Setup: it will NOT let you specify the virtual server on which to install the application. Here’s what the dreaded step in the Setup Wizard looks like. Forgot about the port number for now.
The exact details: the Web Setup picks the first registered Web Site that listens on the specified port and that is running, usually W3SVC/1/ROOT/<ApplicationName> when installing to port 80.
What to do?
Non-working option 1: You could try to specify the IP address or DSN entry (such as http://www.ourdomain.com or without the http prefix) into the virtual directory textbox, but this does not have the desired effect. It is always considered a part of the virtual path and doesn’t affect the Web Site being selected.
Non-viable option 2: Stop all Web Sites that listen on the same port and install. Then start all Web Sites again.
Not really a thing you can do on a production server, and it might be a tedious thing to do manually.
“This actually works” Option 3: Configure the Web Site to listen on a port that is not used by any other Web Site (may be 1234).
Kick the Web Site once (stop and start) to make sure it is running on that port. Then install and specify the same port (see first picture in post). Restore the original port number and kick the server again. (If it makes you feel good, you can walk into the server room and actually kick the server. Not too hard, though, because it may cause disk and/or toe crashes).
I have found that option 2 works very well. I couldn’t find much info on this on the Web during a Google session, so I thought I’d share. Feedback welcome as always.