Changing the ASP.NET version of a Web site in IIS6 using the IIS Manager GUI requires a restart of the W3SVC service. This means that all sites on your Web server will be affected and sessions will be lost. This isn’t really desirable behavior if you are hosting more than one site on a Web Server.
Although one doesn’t often need to upgrade the ASP.NET version of a Web site, it’s important to know how to do so without affecting the remaining sites on the server.
Also, when you are creating a new Web site IIS6 doesn’t allow you to select the version of ASP.NET that you want to use. This is a problem since you must first set the site up, and IIS will default behind the scenes to an ASP.NET version of its choosing (usually the lowest version of ASP.NET you have installed on the server).
In either case of creating a brand new site, or upgrading an existing site it is important to know how to change the version of ASP.NET without needing to affect all of the sites on your Web server by restarting the W3SVC service.
So how can one update the ASP.NET version without restarting the W3SVC service?
The best way to go about upgrading the version of ASP.NET on your server is done using aspnet_regiis at a DOS command prompt.
For example let’s say we’ve just created a new Web site called WebTest in IIS6 on a Server called Test. Our default version of ASP.NET on the Test server is ASP.NET 1.1 and we want to run version ASP.NET 4. How is this done?
- In IIS6 click on the Web Sites folder in the left pane as shown in the image above
- Still in IIS6, make note of the unique Identifier for the Web site you have just created. This should be a numeric value. In the image above I have highlighted the unique identifier with a red box, so we see that we have to refer to the site as Id 126463560.
- Now open Windows explorer and navigate the folder structure to the installation of ASP.NET that you wish to upgrade the site to. For example on a Windows Server 2003 R2 machine the path to ASP.NET 4 is: C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319
- Copy the file system path so you have it in your clipboard.
- Open up a DOS command prompt (select Start – > Run -> and type CMD)
- In your DOS command prompt window type cd\ and hit the enter key to get to the root directory of your machine
- You should see the prompt for c:\
- Type cd
- Then right click the DOS command prompt and select Paste
- The text you have entered into your command prompt should read as follows:
- cd C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319
- Click the enter key
- You now want to find out some further details on your site from the aspnet_regiis tool itself.
- In the DOS Command prompt type:
- aspnet_regiis -lk
- You should see some further details about the Web sites hosted on your Server including the W3SVC registration pathfor your sites and their corresponding versions. The output will look something like this:
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319>aspnet_regiis -lk W3SVC/ 1.1.4322.2470 W3SVC/126463560/root/ 1.1.4322.2470 W3SVC/1292709509/root/ 2.0.50727.3053
- Note that in the example above we are matching our TestWeb site by its unique identifier which is 126463560
- Also noteworthy is that your site may not appear if you have just created it and it has inherited your default ASP.NET version. This is not a problem, just remember in the following command to insert the unique id for your site into the format:
- To update your ASP.NET version to version 4 without a server restart takes only one more command to aspnet_regiis
- To recap: we are now going to call aspnet_regiis from the ASP.NET framework 4 folder on the Web server
- Type in your command to update the version of ASP.NET like the following example:
aspnet_regiis -s W3SVC/126463560/root/ -norestart
- Click the Enter key and you will see output along the following lines:
C:\WINDOWS\Microsoft.NET\Framework\v4.0>aspnet_regiis -s W3SVC/126463560/root/ -norestart Start registering ASP.NET scriptmap (4.0) recursively at w3svc/126463560 /root/. Finished registering ASP.NET scriptmap (4.0) recursively at w3svc/126463560/root/.
At this point the registration will have completed and you will be able to see version 4.0 of ASP.NET registered for your site rather than the default version 1.1 . As you can see this process was quite straightforward and did not involve a restart of the IIS Web service, which is crucial when running several sites on one machine.
Also noteworthy is point #18 above, which is that you may not see your site listed when you run aspnet_regiis -lk, but this is no need to be concerned. There can be several reasons why your site may not appear, but the update command will work just fine if you use your site’s unique Id as if it had appeared in the aspnet_regiis -s command to update your version of ASP.NET.
Here are some sites with further reading on this topic:
- Mike Lichtenberg’s Weblog – Changing the ASP.NET Version of a Site Running on IIS6
- Scott Forsyth’s Blog – ASPNET_regiis.exe Tool, Setting the Default Version Without Forcing an Upgrade on All Sites
- GearHost support – Change asp.net version in IIS 7