ASP.NET 32-bit on Windows Server x64 IIS - Yes?
Windows Server 2003 x64 edition is so cool, now that I have a new 64 bit AMD machine to play on. One thing I was worried about, though, is how do you get ASP.NET 32 bit support in IIS 6.0 - which is now 64 bit! Uh-Oh!
Turns out there's a script mod you can make (the only place I found this is here.)
if you run the following command in Command Prompt, you will be able to use .NET 1.1 ASP.NET in x64s IIS6 (which runs in 32-bit mode):
cscript %SystemDrive%\inetpub\AdminScripts\adsutil.vbs set w3svc/AppPools/Enable32bitAppOnWin64 1
Oops! -- And here is the info from the "horses mouth" at TechNet.
DETAILS:
Running 32-bit Applications on 64-bit Windows (IIS 6.0)
Windows Server 2003TM, Service Pack 1 enables IIS 6.0 to run 32-bit Web applications on 64-bit Windows using the Windows-32-on-Windows-64 (WOW64) compatibility layer. IIS 6.0 using WOW64 is intended to run 32-bit personal productivity applications needed by software developers and administrators, including 32-bit Internet Information Services (IIS) Web applications.
On 64-bit Windows, 32-bit processes cannot load 64-bit DLLs, and 64-bit processes cannot load 32-bit DLLs. If you plan to run 32-bit applications on 64-bit Windows, you must configure IIS to create 32-bit worker processes. Once you have configured IIS to create 32-bit worker processes, you can run the following types of IIS applications on 64-bit Windows:
Internet Server API (ISAPI) extensionsISAPI filtersActive Server Page (ASP) applications (specifically, scripts calling COM objects where the COM object can be 32-bit or 64-bit)ASP.NET applicationsIIS can, by default, launch Common Gateway Interface (CGI) applications on 64-bit Windows, because CGI applications run in a separate process.
Configuring IIS to run 32-bit Web applications on 64-bit Windows
Before you configure IIS to run 32-bit applications on 64-bit Windows, note the following:
IIS only supports 32-bit worker processes in Worker Process Isolation mode on 64-bit Windows.On 64-bit Windows, the World Wide Web Publishing service can run 32-bit and 64-bit worker processes. Other IIS services like the IIS Admin service, the SMTP service, the NNTP service, and the FTP service run 64-bit processes only.On 64-bit Windows, the World Wide Web Publishing service does not support running 32-bit and 64-bit worker processes concurrently on the same server.
After configuring IIS to run 32-bit Web applications on 64-bit Windows
After you configure IIS 6.0 to run 32-bit Web applications, IIS stores 32-bit DLLs and ISAPIs in the %windir%\syswow64\inetsrv directory. All other IIS files, including the MetaBase.xml file, are stored in the %windir%\system32\inetsrv directory. File access to the System32 and sub directories are transparently redirected based on the bitness of the process making that file access (64-bit processes have full access, while 32-bit processes have access to System32 redirected to Syswow64). If your legacy applications have specific 32-bit file access needs and you notice application failures, see if the application needs to reference the new %windir%\syswow64\inetsrv to resolve the problem.
Turns out there's a script mod you can make (the only place I found this is here.)
if you run the following command in Command Prompt, you will be able to use .NET 1.1 ASP.NET in x64s IIS6 (which runs in 32-bit mode):
cscript %SystemDrive%\inetpub\AdminScripts\adsutil.vbs set w3svc/AppPools/Enable32bitAppOnWin64 1
Oops! -- And here is the info from the "horses mouth" at TechNet.
DETAILS:
Running 32-bit Applications on 64-bit Windows (IIS 6.0)
Windows Server 2003TM, Service Pack 1 enables IIS 6.0 to run 32-bit Web applications on 64-bit Windows using the Windows-32-on-Windows-64 (WOW64) compatibility layer. IIS 6.0 using WOW64 is intended to run 32-bit personal productivity applications needed by software developers and administrators, including 32-bit Internet Information Services (IIS) Web applications.
On 64-bit Windows, 32-bit processes cannot load 64-bit DLLs, and 64-bit processes cannot load 32-bit DLLs. If you plan to run 32-bit applications on 64-bit Windows, you must configure IIS to create 32-bit worker processes. Once you have configured IIS to create 32-bit worker processes, you can run the following types of IIS applications on 64-bit Windows:
Internet Server API (ISAPI) extensionsISAPI filtersActive Server Page (ASP) applications (specifically, scripts calling COM objects where the COM object can be 32-bit or 64-bit)ASP.NET applicationsIIS can, by default, launch Common Gateway Interface (CGI) applications on 64-bit Windows, because CGI applications run in a separate process.
Configuring IIS to run 32-bit Web applications on 64-bit Windows
Before you configure IIS to run 32-bit applications on 64-bit Windows, note the following:
IIS only supports 32-bit worker processes in Worker Process Isolation mode on 64-bit Windows.On 64-bit Windows, the World Wide Web Publishing service can run 32-bit and 64-bit worker processes. Other IIS services like the IIS Admin service, the SMTP service, the NNTP service, and the FTP service run 64-bit processes only.On 64-bit Windows, the World Wide Web Publishing service does not support running 32-bit and 64-bit worker processes concurrently on the same server.
After configuring IIS to run 32-bit Web applications on 64-bit Windows
After you configure IIS 6.0 to run 32-bit Web applications, IIS stores 32-bit DLLs and ISAPIs in the %windir%\syswow64\inetsrv directory. All other IIS files, including the MetaBase.xml file, are stored in the %windir%\system32\inetsrv directory. File access to the System32 and sub directories are transparently redirected based on the bitness of the process making that file access (64-bit processes have full access, while 32-bit processes have access to System32 redirected to Syswow64). If your legacy applications have specific 32-bit file access needs and you notice application failures, see if the application needs to reference the new %windir%\syswow64\inetsrv to resolve the problem.
Have you tried the script mod?
ReplyDeleteThe link where you found it displays "Service Unavailable", which is excactly what happened to my IIS behavior after using the suggested script.
I really want to run ASP.Net on 64-Bit Windows server 2003. Any additional info is appreciated.
Thanks,
Markus
The script works, and is well documented in other places. Just hard to find.
ReplyDeleteIf i enable through this script, then some 64 bit applications dont work. So how can i convert my application to run in 64 mode?
ReplyDeleteThis happened to me. After typing in the script, I also received 'Service Unavailable' to all sites on the web server.
ReplyDeleteDoes anyone fix to this as I do want to run IIS6 in 32-bit mode so ASP connects to Access db's using ADO?
Many thanks