Running Multiple Versions of the Framework in ASP.NET
By Scott Forsyth
January 26, 2006
Like any good technology, ASP.NET continues to evolve as new versions
are released. But, like
anything else, this brings with it a number of considerations.
Microsoft has done a great job of allowing multiple versions of the framework to
run side by side. Version v1.0, v1.1 and v2.0 can all run together at the same time
on the same server. Each site, or even a vdir (Virtual Directory) within a site
can have its own version of the framework installed. Simply install the framework
version on your server and it will be available to you. The install
itself
is quite small, for example the v2.0 download is 22MB.
Click here for
the Microsoft .NET
Framework Homepage
There are a couple gotchas to consider with running multiple versions of the framework
side by side. First, let's dig into IIS a bit. Following is a snapshot of Windows
Task Manager on an IIS5 (Windows 2000) server:
Notice the 3 processes called aspnet_wp.exe. There is one per version of the framework.
(v1.0, v1.1 and v2.0) If a process for a particular version of the framework doesn't
exist, as soon as it's needed, a new process will be spun up. This allows multiple
versions of the framework to live beside each other in IIS5. No effort, no pain
. . . it just works.
Now consider the following IIS6 (Windows Server 2003) screenshot:
Notice that there aren't any aspnet_wp.exe
processes anymore, but there are w3wp.exe processes instead. IIS6 was an impressive
upgrade that brought with it some new concepts. One key new concept is Application
Pools. A system administrator is able to create pools of sites. Whenever a site needs to run, a w3wp.exe process will start for
its application pool if it hasn't already started. This brings with it a number
of welcome security, performance and management advantages. You are now able to
specify your own Identity User which can be unique per Application Pool.
In IIS6,
the aspnet_wp.exe process is done away with, and the work that it did is now done
within each w3wp.exe process. This has the same advantages I mentioned previously,
but it has one big gotcha: You cannot run more than one version of the framework
in the same application pool in IIS6.
While multiple versions of the framework can
co-exist on the same server, they can't co-exist in the same process. If you attempt
to run multiple versions of the framework at the same time in the same process,
the 2nd version that tries to run will fail with the following error:
Server Application
Unavailable
The web application you are attempting to access on this web server
is currently unavailable. Please hit the "Refresh" button in your web browser to
retry your request.
Administrator Note: An error message detailing the cause of
this specific request failure can be found in the application event log of the web
server. Please review this log entry to discover what caused this error to occur.
You will also receive Event ID 1062 in Event Viewer that says:
"It is not possible
to run two different versions of ASP.NET in the same IIS process. Please use the
IIS Administration Tool to reconfigure your server to run the application in a separate
process."
What to do:
Fortunately, the solution is easy enough. Simply create a new
application pool and move the site that you will be upgrading to that pool. You
can even base it off of the existing one if you don't have the password memorized
for the existing one. This is all done within IIS. Once you have placed the site
or vdir in its own application pool, then you are ready to upgrade to the new framework
version.
I'll cover the different ways to move between different versions of the
framework in another article, but the key thing to walk away
with now is that multiple versions of the framework cannot co-exist in the same
worker process at the same time. IIS5 didn't have any issue with this, but IIS6
requires that each version be in its own app pool.
Scott Forsyth is the Director of IT at
ORCS Web, Inc.
- a company that provides managed hosting solutions for clients who develop and deploy their applications on Microsoft Windows platforms. Services include shared hosting, dedicated hosting, and webfarm hosting, with specialty in .Net, SQL Server, and architecting highly scalable solutions.