[Todays post comes to us courtesy of Wayne Gordon McIntyre from Commercial Technical Support]
Every so often we come across a support case where a customer has a need for a 32 bit web application to run on the SBS 2008 server. This need usually arises due to a third party website or application that only has a 32 bit Module or ISAPI filter that needs to run on the site. This blog will discuss the steps needed to be able to successfully configure a web site or web application to run under a 32 bit application pool.
In this sample case, I have created a web site called test, running under an application pool that is also called test. This application pool is configured to enable 32-Bit applications which you can see under the advanced settings of the Application pool.
Generally, this is where the support case comes in, as when the customer tries to browse their website it fails with either a 503 service unavailable error or a 500.19 error. In this case we got a 503 service unavailable error first which basically means the app pool has crashed/shutdown.
This will also normally be accompanied by IIS-W3SVC Event 2280 in the application event log similar to the following.
To get past this error we need to edit the Native modules in the applicationhost.config by defining a preCondition bitness parameter for the RpcProxy native module. Native modules are registered and un-registered at the web server level under the <globalModules> section.
Before we make any modifications to the applicationhost.config, take a backup of your current IIS configuration:
Once we have a successful backup we can go ahead and modify the applicationhost.config file to add the bitness precondition:
<add name="PasswordExpiryModule" image="C:Windowssystem32RpcProxyRpcProxy.dll" preCondition="bitness64" />
** Note that preCondition is case sensitive the "C" must be capitalized.
*** You may also have kerbauth and exppw listed under <globalModules>. These modules belong to Exchange and are also 64 bit. If you have these modules listed here add the same preCondition for bitness64 to those as well.
At this point if you attempt to browse your 32-Bit web site you will now see the other error which is the 500.19 error mentioned earlier.
To correct this error we now need to delete both the DynamicCompressionModule and the StaticCompressionModule from your 32-Bit website/application. To do this perform the following steps:
**Replace yourWebsiteName with the actual name of your site. In this example the name is test.
Do the same for the staticcompression module, Appcmd.exe delete module staticcompressionmodule /site.name:yourWebsiteName
** In this example we are using a basic web site, however in most cases, you will probably be using a web application. Modify the command to have /app.name:yourAppName rather than /site.name:yourWebsiteName if you are using a web application.
After completing these steps you should now be able to browse your 32-Bit web application/site
Configuring Native modules:
HTTP Status Codes in IIS 7.0
Great blog on IIS 7 preConditions