Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

IIS Application Pools fail in 32 Bit Mode in Windows 10

On my development machine, whenever I set an IIS Application pool to run in 32 bit mode, any Web application started will simply hang. When accessed in the browser the app will 'hang' for about 5-10 seconds, before receiving a 503 error. The Application Pool for the app will be stopped at that point and has to be explicitly restarted.

In 64 bit (default) mode everything is fine, but whenever the pool is switched to 32 bit it immediately hangs even on static pages in a new and otherwise empty Web site.

The same applications runs fine when published to my live server in 32 bit mode, so it appears this is some sort of configuration problem. I've enabled Failed Request Tracing but nothing shows up in the logs.

I have several applications that have to run 32 bit due to some old COM dependencies, but I cannot get the server to run.

Any ideas what might be causing this problem?

like image 210
Rick Strahl Avatar asked Aug 27 '16 05:08

Rick Strahl


People also ask

How do I enable 32-bit applications in IIS Windows 10?

To enable IIS to run applications in the 32-bit mode: Go to Websites & Domains > Dedicated IIS Application Pool for Website. Select the “Enable 32-bit applications” checkbox and then click OK.

How do I enable 32-bit applications in IIS Express?

The 32 bit version can be found at c:\program files (x86)\IIS Express\iisexpress.exe and the 64 bit version can be found at c:\program files\IIS Express\iisexpress.exe . IIS Express ignores the enable32BitAppOnWin64 attribute. To run the app pool as 32 bit, you must execute the 32 bit version of IIS Express.


1 Answers

Ok I found the problem, which was the AspNetCore Module which had the 64 bit version registered without a bitness value in the IIS Module list.

This problem isn't specific to the AspNetCoreModule, except that the module was installed without specifying a bitness64 (for the 64 bit version). Without the bitness value the module loads even in 32 bit mode and causes the server to crash.

An additional point of failure is the IIS Rewrite Module, which gets hosed for similar reasons when Windows is updated. Every Windows update the Rewrite Module breaks IIS for me (32 and 64 bit). This was the initial failure and event log entry. After Reinstalling the Rewrite module the AspNetCoreModule errors started showing up in the event log. I have more info that issue on my blog: https://weblog.west-wind.com/posts/2015/jul/05/windows-10-upgrade-and-iis-503-errors

To fix the bitness of the AspNetCore module I changed the bitness in Applicationhost.config:

<add name="AspNetCoreModule" image="%SystemRoot%\system32\inetsrv\aspnetcore.dll" preCondition="bitness64" />

Notice the precondition=bitness64 which is all that was needed to make the 32 bit AppPools work again as this prevents the module from loading into 32 bit processes. It's possible a reinstall of the AspNet Server runtime might also fix this, but I didn't verify this.

When 503 errors occur on app start up they are usually Application Pool related and won't show up in FREB logs. The EventLog does have more info and in this case pointed first at the Rewrite Module, then at the AspNet Core Module.

like image 145
Rick Strahl Avatar answered Sep 19 '22 18:09

Rick Strahl