HOWTO: Install and Run ASP.Net 2.0 Side-by-Side
Hmm, this is one of the more unusual questions that I have received lately...
Question:
how do you setup asp.net 2 along side with asp.net 1.1 in Windows 2003/IIS6? do i need sdk or redistributable package?
Answer:
The Redistributable package allows you to run .Net applications. The SDK just contains additional tools (like ILDASM, SN), samples, documentation, etc necessary for a developer to fully develop with .Net.
Since it sounds like you just want to run different versions of ASP.Net side by side, you just need to:
- Download the .Net Framework Redistributable Package from: https://msdn.microsoft.com/netframework/downloads/updates/default.aspx
- Install it on Windows Server 2003
ASP.Net 2.0 will automatically be set up as the default.
Since you cannot load multiple versions of the CLR into the same process, you cannot run applications of different ASP.Net versions in the same Application Pool. For IIS6 in Worker Process Isolation Mode, this means that you must:
- Create different Application Pools, one for ASP.Net 1.1 and another for ASP.Net 2.0
- Configure your ASP.Net application to use either Application Pool as appropriate
- Configure the IIS Scriptmaps of that application to either point to ASP.Net 1.1 ISAPI or ASP.Net 2.0 ISAPI
ASPNET_REGIIS.EXE of .Net Framework 2.0 has several options that you want to explore concerning versioning of .Net applications and appropriate configuration of IIS Scriptmaps. You probably want to head to https://www.asp.net for more community information, or read this topic on MSDN
//David
Comments
Anonymous
November 08, 2005
I've been working with developers to load the 2.0 framework on some W2K test servers. When I installed the Beta2 and recently the Release version of 2.0 on the server it creates the ASP.NET tab at the site level and virtual directory level. But the default framework has always been 1.1 for existing sites.
Is there a situation when the default framework for existing sites is different?Anonymous
November 08, 2005
Byron - I think the behavior really depends on the ASPNET_REGIIS.EXE commandline options chosen by .Net Framework setup. If you are really curious, you can always use NT ImageFileExecutionOptions to attach a usermode debugger to aspnet_regiis.exe by image name, and with symbols from the public Microsoft symbols server, obtain the commandline using !peb and get the answer that way.
Or... I can ask the setup tester for ASP.Net who told me that on upgrades, the commandline parameter used is -ir, so existing versions should be left alone for compatibility reasons.
//DavidAnonymous
November 08, 2005
i use Helm control panel and it let you switch between asp.net 2 and 1.1
i just don't quite understand if i need to map windows service extension(script) under .aspx or i need to create another just for asp.net 2Anonymous
November 08, 2005
Jack - You should not need to do either. ASPNET_REGIIS.EXE should handle all of that for you (I would not be surprised if Helm just calls ASPNET_REGIIS.EXE underneath the covers - that's what I would do because I wouldn't want to second guess what ASP.Net is doing within my own product...).
Creating another Application mapping does not make sense. Yes, you can run multiple ASP.Net application versions side-by-side on the same server, with the caveat that none can be in the same process. In an IIS6 context, it means that none can be in the same Application Pool, and since each application belongs to exactly one Application Pool and Application Mappings are tied to the application's namespace, it means that .aspx extension can only be for one version of ASP.Net.
In other words, having .aspx map to ASP.Net 1.1 and .aspx2 map to ASP.Net 2.0 does not make sense. You won't be able to run them both simultaneously in the same application/pool anyway.
//DavidAnonymous
November 08, 2005
Thank, David. i'll try it out.Anonymous
March 08, 2006
I am a programmer and need to develop using VS2003 and VS2005.
Right now I am doing VS2003 development in a VM because when I try to do it otherwise I get the message
"Unable to start debugging on web server"
Every thing worked fine before installing VS2005.Anonymous
March 19, 2006
One of the cooler but definitely unsung feature of the IIS7 Server Core is PreConditions. So, that's...Anonymous
March 28, 2006
Side-by-Side is a joke.
I several web sites I am developing. Some older sites are .NET 1.1
and some are .NET 2.0
Without a special batch file and other hoops
There is no way to debug them and work with them on the same
machine.
I got it to work but had to set and reset so often I gave up and
just configured 2 different machines.
Here is the batch file. It reconfigures the web server to look at 2.x first. I wrote another to go the other way.
This is ONE Sided architecture.
Bob
@echo off
echo ----------------------
echo ASP.NET & IIS Re-Bind
echo ----------------------
echo Stopping IIS
iisreset /stop
echo ----------------------
echo Deleting the ASPNET account
net user ASPNET /delete
echo ----------------------
echo Stopping ASP.NET State Service
net stop aspnet_state
echo ----------------------
echo Reregistering ASP.NET and the ASPNET account.
C:winntMicrosoft.NETFrameworkv2.0.50727aspnet_regiis.exe -i
echo ----------------------
echo Starting ASP.NET State Service
net start aspnet_state
echo ----------------------
echo Atempting to restart IIS
iisreset /start
echo ----------------------
echo IIS Resetting
iisreset
echo Binding Complete...
pause
@echo on
Anonymous
March 28, 2006
Bob - Sorry, but the batch file you show is exactly ONE Sided architecture (it resets the global scriptmap to .Net 2.0), so I am not surprised Side-by-Side does not work.
Due to Framework versioning issue within a process, Side-by-Side is accomplished exactly as I describe above. Prior to IIS6, all you have to do is set up scriptmaps on a per-URL basis using ASPNET_REGIIS.EXE and ASP.Net does the rest. On IIS6 due to Application Pool, you can only have one framework version per Application Pool, so in addition to setting up scriptmaps on a per-URL basis you have to create and use 1.0, 1.1, and 2.0 application pools, respectively.
If you are trying to mix .Net versions within the same URL namespace, it won't work so nicely, but what you are doing is not versioning, either.
Many people successfully develop against .Net 1.1 and .Net 2.0 simultaneously. You can too, if you want.
//DavidAnonymous
June 20, 2007
Hi I have recently deployed .NET 2.0 on a test-WebFarm and on a test-BizTalk 2004 cluster. Due to incompatibility with BizTalk Server 2004 SP1, we desided to uninstall .NET 2.0 from there serveres, until we have deployed BizTalk Server 2004 SP2. Tests didn't show any abnormal on the WebFarm, until we deployed a new webservice, that needed I/O permissions on a remote fileshare. First we added a strong name to the assembly and registered it in the GAC, due to the issue in .NET 2.0 where assemblies by default is only provided medium trust. Then we just got a new error. Using the FileMon utility we found, that the access with .NET 2.0 is changed to the IWAM account (with .NET 1.1 the access were conducted with the IUSR account) I created the following script to control which .NET version the assembly uses (change the <...>): C:WINDOWSMicrosoft.NETFrameworkv2.0.50727aspnet_regiis -s W3SVC/<WebSiteID>/ROOT/COMMON -norestart C:WINDOWSSystem32iisapp /a <AppPool> /r We still got errors ... At last I ran a IISRESET /RESTART for a server in the WebFarm, and suddenly it all performed without any errors on that server ! Despite my general reluctance with using the IISRESET, we might be forced to incorporate a standard IISRESET /RESTART after each deployment of a webservice that uses .NET 2.0 .... I have not been able to figure out what is the correct solution, and what actually causes this behavoir, but my solution for now is to make a IISRESET /RESTART after deploying .NET 2.0 .... Regards /JakobAnonymous
September 05, 2007
we have both 1.1 and 2.0 installed on our intranet cluster (2 x w2k3 servers). I have noticed that if I need to change "anything" in IIS for a .net 2.0 website IIS goes mental and stops the entire virtual website. This so far has included changing the version of .net on the ASP.Net tab, adding a new "default document" - anyone got any ideas? The outcome of this is when I launch a new app I will always stop our entire intranet service, or at least, half of it, the other node in the cluster will obviously stay up - any thoughts?Anonymous
May 12, 2010
I have faced same issue. I am using asp.net 1.1 and asp.net 2.0 at the same server (windows 2003). Only one version was running at a time and other version got errored out. I have created new applcation pool for asp.net 2.0 and linked to 2.0 applications then both verison started working fine. Thank you David.