views:

6980

answers:

6

We create new sites in IIS 6 (Windows Server 2003) using IIS Manager. When these sites are created in IIS 6, the ASP.NET version defaults to ASP.NET 1.1. We would like it to default to ASP.NET 2.0. The reason this is a problem for us is that when you take any site on the server and switch the ASP.NET version from ASP.NET 1.1 to ASP.NET 2.0, all web sites recycle.

Is there a setting in the IIS metabase that controls this or a way to create a site via script that sets the ASP.Net version correctly so that we can avoid the IIS reset when setting up each site?

A: 

I believe all you have to do is change the default website's version to 2.0.

Bloodhound
+4  A: 

Find the directory for the version of .Net you want, for example; C:\Windows\Microsoft.NET\Framework\v2.0.50727 Get a cmd prompt there and then run aspnet_regiis -i. Further info @ http://weblogs.asp.net/owscott/archive/2006/05/30/ASPNet_5F00_regiis.exe-tool_2C00_-setting-the-default-version-without-forcing-an-upgrade-on-all-sites.aspx

Ryan

+4  A: 

Be warned, running aspnet_regiis -i will remap all of your IIS websites to 2.0. If you have existing 1.1 applications that you want to keep, run aspnet_regiis -ir instead. This will set 2.0 to be the default runtime for IIS, but it won't change the script mappings for existing sites.

sbanwart
well i thought we can target specific sites to map to 2.0 using aspnet_regiis. I have done this many times without affecting other 1.1 sites..
Gulzar
The point of the question is to default 2.0, not change existing sites to 2.0.
Bloodhound
A: 

Simple answer: Open IIS Manager. In navigation pane, find the .NET2 web site and right click on it. Select "Properties". Then select "ASP.NET" tab. First dropdown on that screen gives you option to select a different version of .NET.

Please be aware -- when I did this, all of the web sites on the web server stopped running. Microsoft support told me that .NET1 and .NET2 should not be run from same general area (default web sites) of the web server. Solution is to create an application pool on the web server for either .NET1 or .NET2 sites and then use that to isolate all sites running the "other" version of .NET. Instruction for creating an application pool can be found under "help" in IIS Manager.

You can create just one application pool and put all sites with same .NET in the same pool or you can create an application pool for each application. Your choice.

KGreene
+3  A: 

As already mentioned by another, I reference this post whenever I need to change the .NET settings for a site.

As for your question, the following steps (summarized from the linked post) should achieve what you need:

  1. Run aspnet_regiis -lk from any .NET framework folder to list your current settings to help you determine which sites should remain using .NET 1.1. If you know there is a .NET 1.1 site, but it is not explicitly listed by this command, then it is inheriting from the root W3SVC/.

  2. For all .NET 1.1 sites not explicitly listed by the previous command, you will need to force them to use .NET 1.1:

    1. Determine the Identifier ID of the site(s) which you want to force to use .NET 1.1. (Through the IIS 6 Manager, you can determine the Identifier of a site by clicking the "Web Sites" folder on the left side of the tool. On the right side, all your sites will be listed, and the Identifier column shows the ID.)
    2. From the .NET 1.1 framework folder, run aspnet_regiis -sn W3SVC/<Identifier ID>/ROOT/ where <Identifier ID> is the ID of the site which you want to force to use .NET 1.1.
  3. Finally, change the root W3SVC/ to use .NET 2.0 so that all newly created sites will inherit from the root and default to use .NET 2.0. To change the root, from the .NET 2.0 framework folder, run aspnet_regiis -sn W3SVC/.

You can run aspnet_regiis -lk again to verify your settings.

Tim
+1  A: 

The following will set the default website to ASP.NET 2.0:

C:\windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -sn W3SVC/

Child applications inherit the ASP.NET setting from the parent, so all children will have the new setting.

Alternatively run as variation on this command after setting up the new application.

Rob

Robert Wagner