“Service Unavailable” in IIS7 with 32 bit application pool


As sometime happens, while setting up a repro for a customer (I’m working with him on a completely different problem) I wanted to test my sample code on a 32 bit w3wp.exe instance (I am running Windows 2008 x64); nothing easier on IIS7, just create a new application pool and change its “Enable 32.Bit Applications” property to true in IIS Manager and you’re done:

 Enable 32 bit application

But when I tried to run my code, I got this a “HTTP Error 503. The service is unavailable” message and the application pool was stopped. The Application event log contains a few entries like the following:

Log Name:      Application
Source:        Microsoft-Windows-IIS-W3SVC-WP
Date:          02/02/2009 14.19.05
Event ID:      2280
Task Category: None
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      <computername>
Description: The Module DLL C:\Windows\system32\RpcProxy\RpcProxy.dll failed to load.  The data is the error.

I also got some of this warning:

Log Name:      System
Source:        Microsoft-Windows-WAS
Date:          03/02/2009 20.42.55
Event ID:      5139
Task Category: None
Level:         Warning
Keywords:      Classic
User:          N/A
Computer:      <computername>
Description: A listener channel for protocol 'http' in worker process '4580' serving application pool '32bitPool' reported a listener channel failure.  The data field contains the error number

If I changed the application pool back to a 64 bit process, everything worked fine again.

I save you the tedious details, but the point is: RpcProxy.dll is 64 bit, obviously it cannot by loaded into a 32 bit process…

RpcProxy.dll

As I usually do as part of my “learning experience”, I installed all the available roles for IIS7 and one of them is “RPC over HTTP Proxy”:

RPC over HTTP

This installs RpcProxy.dll (and other files) and changes applicationHost.config adding a new global module:

<add name="PasswordExpiryModule" image="C:\Windows\system32\RpcProxy\RpcProxy.dll" />

How can I prevent IIS from loading it? Easy, just add the preCondition=”bitness64” attribute as follows:

<add name="PasswordExpiryModule" image="C:\Windows\system32\RpcProxy\RpcProxy.dll" preCondition="bitness64" />

Bingo, I finally have my 32 bit worker process up and running! Nerd smile

 

 Carlo

Quote of the day:
We are born charming, fresh and spontaneous and must be civilized before we are fit to participate in society – Judith Martin

Comments (11)

  1. Getting feedback always nice, as it is getting suggestions about new posts as happened this morning with

  2. Isha says:

    Nice one carloc..this resolved one of my customer’s issue (m with IIS team MS) ..thanks

  3. Sílvia says:

    Fou me it didn´t work… I change in applicationHost.config and when I try to change to 32bits give me an error in the file. Please can you help me

    Sílvia

  4. Silvia, which error do you get exactly? Anything in the event log?

  5. Andy Sinclair says:

    Thanks so much, it resolved my issue!

  6. Manfred says:

    Thank you a lot

    This saved me a lot of time

  7. Thank you so much for posting this! You just saved my bacon! I too had made this seemingly innocuous change and my application pools began crashing! Our webmail went down; what a mess!

    Anyway, thanks again – for the post and the clear explanation!

  8. SamSalman says:

    Thanks Man..

    I have been Finding th Solution of this problem in many forums but. I couldn't Find.

    But U saved my Life.

    Thanks

    Regards

  9. Alex says:

    Gracias me funcionó, me estuve matando cambiando la configuracion de mi aplicacion y la version del chilkat y no daba con el problema.

  10. Exchange Admin says:

    Thank you

    After Disable 32 option now my exchange server is up and running.

Skip to main content