Index Server and the Enable 32-Bit Applications Setting
We had a old website that made use of Microsoft Index Server and the Index Server COM objects (ixsso,Query). Everything was working fine on our Windows Server 2003 machines under IIS6. Then when we migrated to Windows Server 2008 and IIS7 our classic asp pages (which we did a straight migration over to classic asp in IIS7) could not instantiate the Index Server objects.
Simply instantiating the object would fail:
Dim objQuery
Set objQuery = Server.CreateObject("ixsso.Query")
After a call to Microsoft PSS we were finally able to track down the problem to the Application Pool running in 32-bit mode. IIS7 allows you to run the application mode in 32-bit or 64-bit by configuring this setting of the application pool:
False is the default but it was overridden to true in the Application Pool where the Index Server object was being instantiated. And the Index Server dlls are 64-bit only. So while a 32-bit dll can load in a 64-bit process the reverse is not possible. There was no reason that the application pool was set to 32-bit so we switched it to 64-bit (changed the “Enable 32-bit Applications setting to false) and everything worked.