Saturday, December 5, 2009

Running a 32-Bit Assembly on a 64-Bit IIS server

Last week, I was installing a web application on our 64-Bit webserver. After deployment I got following error when trying to load the website:

Could not load file or assembly 'Name' or one of its dependencies. An attempt was made to load a program with an incorrect format.

This error occurs when you have the following settings:

  • IIS running on a 64-Bit Operating System
  • The Assembly DLL in question has been compiled for 32Bit - check the project properties under the build tab, if under platform target you have x86 then it is 32-Bit only.
    x86_1

By default a 64-Bit IIS machine is using an Application Pool that is not allowing a 32-Bit DLL to be processed. You have to enable 32-Bit support for the Application Pool yourself. Therefore open IIS Manager, find the application pool for the site and select the Advanced Settings.

AppPoolAdvSettings_1

Notice that there is an option called "Enable 32-Bit Applications" . Enable this and you should be good to go.

No comments: