One of the recurring problems I get when installing our ASP.Net system onto customers servers is this cryptic error:
Could not load file or assembly <AssemblyName> or one of its dependencies. An attempt was made to load a program with an incorrect format
The first time I saw it it really stumped me for a couple of hours to find what the problem was, the stack trace, nothing made any sence. I eventually tracked the only difference down to the server being 64bit. IIS can run an asp.net application in either 64 or 32bit mode and most people leave both 32bit and 64bit support enabled when they compile there ASP.Net to automatically give them improved performance on a 64bit machine. Unfortunatly if you are using a 3rd party componant that is older, perhaps an old non managed library it is more likely to be compiled for 32bit exclusivly. This 3rd party library means your entire application wont be able to run in 32bit mode, and to make matters worse IIS running under 64bit has 32bit support disabled by default and your Compiled code will attempt to run in 64bits, which in turn causes the nasty error message above.
There are one of two solutions:
1. find the offending library and remove it from your Web Application
2. Enable 32bit support in IIS.
a. Go to Application Pools in IIS
b. Right click on the relevant application pool
c. Press advanced settings
d. Set Enable 32-Bit Applications to True
e. Restart the Application Pool
This quick fix will buy you time so you can remove the offending library at your leisure