I've just been working on migrating a staging web site from II6 to IIS8.
IIS8 comes with an option Enable 32-Bit Applications which is a true false flag. The explanation of this flag is:
[enable32BitAppOnWin64] If set to True for an application pool on a 64-bit operating system, the worker process(es) serving the application pool run in WOW64 (Windows on Windows64) mode. In WOW64 mode, 32-bit processes load only 32-bit applications.
Now if I set this to False
my web site stops serving and I get a 500 logging an error message of:
ISAPI Filter 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_filter.dll' could not be loaded due to a configuration problem. The current configuration only supports loading images built for a AMD64 processor architecture. The data field contains the error number. To learn more about this issue, including how to troubleshooting this kind of processor architecture mismatch error, see
Now I guessed that their must be an assembly with x86 flags set, so I followed the instructions from this post using CorFlags to check this. But the all return Any CPU
, i.e.
Version : v4.0.30319
CLR Header : 2.5
PE : PE32
CorFlags : 9
ILONLY : 1
32BIT : 0
Signed : 0
There are slight veriations but thats the jist.
So why do I need to set Enable 32-Bit Applications to True
?
So I've done some more investigation using Process Explorer (this question helped) and it appears that if I set enable 32-bit applications to False
and even though the Corflags says they do not require 32 bit several of the dlls do have an image type of 32-bit: