Running DotNetNuke on 64-bit Windows
Posted by Tom on Wednesday, July 11, 2007 to DotNetNuke, DNN Tips and Tricks
On a recent project I was tasked with moving a DNN 3.2.2 based website to Windows Server 2003 x64 Edition. What I ran into is not directly related to DNN, but more so to the .NET 1.1 framework which ASP.NET and DNN rely on.
First I noticed that .NET 1.1 was not installed on the 64-bit box. So I downloaded the redistributable package from Microsoft, who lists the 64-bit version of Windows Server 2003 SP1 as a supported operating system. Shortly after starting the installation though, I was greeted with the following message:

This "incompatibility" refers to the fact that 64-bit processes cannot load 32-bit DLLs. The Windows-32-on-Windows-64 (WOW64) compatibility layer was introduced with Service Pack 1 of Windows Server 2003 and allows IIS 6.0 to run 32-bit Web applications on 64-bit Windows. In other words, you have to scale IIS back to 32-bit mode to run pre-DNN4 versions on 64-bit Windows.
So as instructed, I opened a command prompt and navigated to the %SystemDrive%\Inetpub\AdminScripts directory and ran the following command to put IIS into WOW64 mode:
cscript.exe adsutil.vbs set W3SVC/AppPools/Enable32BitAppOnWin64 “true”
Next I confirmed that ASP.NET was properly registered with IIS and was set to "Allowed" in the Web Service Extension list of IIS.

There was still one piece of the puzzle missing though. There was no ASP.NET tab in the IIS management console. At that point I browsed to my DNN install to see what would happen. An error happened and the error message indicated that DNN was "calling" ASP.NET 2.0. Since this is DNN 3.2.2 I needed it to play with version 1.1, but how do you switch versions without the ASP.NET tab in IIS?
Without being overly concerned about running DNN 4.x on this box or other web applications that require ASP.NET 2.0, I "unregistered" it by navigating to the %SystemDrive%\WINDOWS\Microsoft.NET\Framework\v2.0.50727 directory and running aspnet_regiis -u from the command line. I figured this way there is only ASP.NET 1.1 left and therefore DNN has no versions to "choose" from. And indeed, the website came up error free and functioned properly.
I was still curious about the missing ASP.NET tab in IIS though. As it turns out, it is a knows issue. But you can still run ASP.NET 1.1 and 2.0 side-by-side in 32-bit mode on a 64-bit machine. You'll have to use aspnet_regiis -s <path of the application> to map web applications to specific ASP.NET versions.
To sum up, you can run ASP.NET 1.1 and 2.0 (even concurrently) on a 64-bit Windows box, but you have to put IIS in WOW64 mode to support the 32-bit DLLs of the .NET Framework 1.1. As expected, the Windows-32-on-Windows-64 compatibility layer creates additional overhead and therefore Microsoft does "not recommend this environment for .NET Framework 1.1 applications that demand high performance or scalability, such as high-load ASP.NET applications." Of course, this only makes sense to begin with if you have to support "legacy" web applications such as DNN 3.2.2. Once you upgrade to DNN 4.x, you also move to the .NET Framework 2.0, which includes native 64-bit support for Itanium-based systems.
It took me quite a while to wrap my head around all this. So if I went off in the wrong directions somewhere please let me know in the comments.
Permalink
3 Comments
RSS feeds
Email updates