Click here to Skip to main content
11,921,835 members (65,103 online)
Rate this:
Please Sign up or sign in to vote.
See more: ASP.NET COM DLL Interop , +
I have built an ASP.NET web application (that houses a Silverlight 4 app) and it utilizes a couple of COM dlls. The dlls are registered (verified by finding the CLSIDs in the registry, and seeing the classes within the CLSIDs), and they are located in a directory that has full control for all users.

When I run the VS debug using the localhost method, everything runs fine, but when I change it to use IIS hosting, it throws the error:

Retrieving the COM class factory for component with CLSID {006CA725-8B67-11D4-A067-FFF276E93345} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))

I am using Win7 64-bit, and I have enabled the appilcation pool for the site in IIS to allow 32-bit applications.

Not sure what else to try. The dlls are provided to us by a 3rd party manufacturer to calculate their product performance (which we need to help calculate our product performance), so I am unable to rebuild them in .NET (and the manufacturer is not changing them since they would then have to go through the re-certification process).

Posted 27-May-11 4:13am
Rate this: bad
Please Sign up or sign in to vote.

Solution 1

This discussion talks about a possible work around for the error:[^]

BTW there are many other discussions here[^] Thumbs Up | :thumbsup:
Rate this: bad
Please Sign up or sign in to vote.

Solution 3

The solution was a stupid oversight on my part. Since I am still learing IIS, i set the application pool to have the correct settings, but I forgot to set the site to use the application pool.

The application pool had to be set to allow 32-bit applications, which it was, but was not being used by the site.

So far this seems to have done the trick.

Thanks for the help,
Rate this: bad
Please Sign up or sign in to vote.

Solution 4

My problem and the solution

I have a 32 bit third party dll which i have installed in 2008 R2 machine which is 64 bit.

I have a wcf service created in .net 4.5 framework which calls the 32 bit third party dll for process. Now i have build property set to target 'any' cpu and deployed it to the 64 bit machine.

when i tried to invoke the wcf service got error "80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG"

Now i used ProcMon.exe to trace the com registry issue and identified that the process is looking for the registry entry at HKLM\CLSID and HKCR\CLSID where there is no entry.

Came to know that Microsoft will not register the 32 bit com components to the paths HKLM\CLSID, HKCR\CLSID in 64 bit machine rather it places the entry in HKLM\Wow6432Node\CLSID and HKCR\Wow6432Node\CLSID paths.

Now the conflict is 64 bit process trying to invoke 32 bit process in 64 bit machine which will look for the registry entry in HKLM\CLSID, HKCR\CLSID. The solution is we have to force the 64 bit process to look at the registry entry at HKLM\Wow6432Node\CLSID and HKCR\Wow6432Node\CLSID.

This can be achieved by configuring the wcf service project properties to target to 'X86' machine instead of 'Any'.

After deploying the 'X86' version to the 2008 R2 server got the issue "System.BadImageFormatException: Could not load file or assembly"

Solution to this badimageformatexception is setting the 'Enable32bitApplications' to 'True' in IIS Apppool properties for the right apppool.
Rate this: bad
Please Sign up or sign in to vote.

Solution 2

I found this on the first page of over 2.1 million results with a google search for " class not registered":[^]

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 OriginalGriff 538
1 Dave Kreskowiak 260
2 Sergey Alexandrovich Kryukov 173
3 phil.o 170
4 RyanDev 134
0 OriginalGriff 7,036
1 KrunalRohit 4,530
2 Sergey Alexandrovich Kryukov 3,286
3 George Jonsson 2,840
4 Suvendu Shekhar Giri 2,216

Advertise | Privacy | Mobile
Web03 | 2.8.151120.1 | Last Updated 8 Sep 2015
Copyright © CodeProject, 1999-2015
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100