C# – ‘80040154 Class not registered’ with interop from ASP.NET

asp.netccomiisnet

I'm receiving the following error on a Windows XP Pro SP2 x64 machine running IIS6:

System.Runtime.InteropServices.COMException: 
Retrieving the COM class factory for component with CLSID
{3C250CBD-6CC9-11D2-9457-00004B48467E} failed due to the following error:
80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

This occurs when trying to instantiate a COM interop object.

Oddly enough, this works fine from a console application running under the same account as the application pool (a user in AD). I.e. both use UserX, so it doesn't seem like an obvious permissions issue.

Anyone else had anything similar?

Best Answer

Make sure that your application pool is either 32 bit (or supports 32 bit apps) or your COM control supports 64 bit apps. Most likely, your native COM library is 32bit and your pool runs a 64 bit worker by default, which is unable to load 32bit COM dll.