Mailbag: How to install the .NET Framework but not configure ASP.NET

Question:

I have a production server that is running Windows Server 2003.  This OS comes with the .NET Framework 1.1 pre-installed, and it is being used as an ASP.NET web server.  I want to install the .NET Framework 2.0 to enable some additional applications, but I do not want to interfere with the ASP.NET web server that is using the .NET Framework 1.1.  How can I install the .NET Framework 2.0 but ensure that my web server continues to use the .NET Framework 1.1 when it hosts ASP.NET pages?

Answer:

It is not supported to install the .NET Framework 2.0 without installing the files for ASP.NET, and it is also not supported to skip ASP.NET registration during .NET Framework 2.0 setup on systems that have IIS installed and enabled.  However, there are a couple of options that will allow you to continue to use the .NET Framework 1.1 for web applications that are hosted on your server.

Option 1

In this option, you install the .NET Framework 2.0 and then use the .NET Framework 1.1 version of aspnet_regiis.exe to update the IIS metabase to use the .NET Framework 1.1 for web applications that it hosts.  To do this, use the following steps:

  • Install the .NET Framework 2.0 using your preferred means of installation.  For example, you can use one of the command line switches in this blog post to perform a silent or unattended installation.
  • After installation completes, run %windir%\Microsoft.NET\Framework\v1.1.4322\aspnet_regiis.exe -i -enable to re-associate the .NET Framework 1.1 with IIS by default

Option 2

In this option, you install the .NET Framework 2.0 and pass in a property that causes it to use a different command line when it runs aspnet_regiis.exe during installation.  The property is named NOASPUPGRADE and it causes setup to run aspnet_regiis.exe -ir instead of aspnet_regiis.exe -iru.  The command line in this option looks like the following:

dotnetfx.exe /c:"install.exe /msipassthru MSI_PROP_BEGIN""NOASPUPGRADE=1""MSI_PROP_END"

Please note that I am not an expert in ASP.NET functionality, so I am not 100% sure what the difference is between running aspnet_regiis.exe -ir and aspnet_regiis.exe -iru.  It appears that the -ir switch will cause ASP.NET to not update any scriptmaps in IIS, whereas the -iru switch will cause ASP.NET to not update scriptmaps in IIS for existing applications only.

The -iru switch is new in the .NET Framework 2.0, and running aspnet_regiis.exe -? shows the following information for the various -i switches:

  • -i  - Install this version of ASP.NET and update scriptmaps at the IIS metabase root and for all scriptmaps below the root. Existing scriptmaps of lower version are upgraded to this version.
  • -ir - Install this version of ASP.NET, register only. Do not update scriptmaps in IIS.
  • -iru - Install this version of ASP.NET. If there are any existing applications that uses ASP.NET, it will not update scriptmaps in IIS.

A note about .NET Framework 1.1 and ASP.NET behavior

It is also important to note that .NET Framework 2.0 setup behaves differently than .NET Framework 1.1 setup with respect to ASP.NET registration.  In the .NET Framework 1.1, the default behavior of setup is to run aspnet_regiis.exe -i, which forces upgrade of existing applications.  In the .NET Framework 2.0, if there are any existing applications, they will not be upgraded by default.

Also, an equivalent to option 2 existed for the .NET Framework 1.1, but it can be accomplished with a simpler command line switch.  The command line looks like the following for the .NET Framework 1.1:

dotnetfx.exe /c:"install.exe /noaspupgrade"