I am using Windows 7 x64. I get a BadImageFormatException when starting a MVC app. If it runs in an application pool with 32-bit applications enabled the exception is not thrown. It looks like loading the global.asax is the problem. I enabled the fusion logging (HKLM\software\Microsft\Fusion!EnableLog) registry setting. This is the log:
=== Pre-bind state information ===
LOG: User = NT AUTHORITY\SYSTEM
LOG: Where-ref bind. Location = C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\spl.sim.mvc\5802065c\a2782d40\App_global.asax.olejmmua.dll
LOG: Appbase = file:///C:/Spl/SimSvn4.5/Source/Spl.Sim.Mvc/
LOG: Initial PrivatePath = C:\Spl\SimSvn4.5\Source\Spl.Sim.Mvc\bin
Calling assembly : (Unknown).
===
LOG: This bind starts in LoadFrom load context.
WRN: Native image will not be probed in LoadFrom context. Native image will only be probed in default load context, like with Assembly.Load().
LOG: Using application configuration file: C:\Spl\SimSvn4.5\Source\Spl.Sim.Mvc\web.config
LOG: Using host configuration file: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/spl.sim.mvc/5802065c/a2782d40/App_global.asax.olejmmua.dll.
ERR: Failed to complete setup of assembly (hr = 0x8007000b). Probing terminated.
Using different build configurations this is the result:
Build x64, 32 bit application pool false: Error
Build x86, 32 bit application pool false: Error
Build AnyCPU, 32 bit application pool false: Error
Build x64, 32 bit application pool true: Error
Build x86, 32 bit application pool true: OK
Build AnyCPU, 32 bit application pool true: OK
IIS Express: OK
How can I find the 32 bit problem dll used in a 64 bit configuration?