What operating system? Is it 64 bit?
You need to uninstall the old COM object using regsvr32:
regsvr32 -u <dllName>.dll
Please note that if the old COM object doesn't exist anymore you're going to have a problem. If possible make sure the old COM object is in the directory where it was registered and then call the regsvr32 to uninstall it.
Once uninstalled, remove the old DLL and replace it with the new one and then run the regsvr32 command:
regsvr32 <dllName>.dll
Please note that if you run the following it sometimes comes up with the message about no entry points found so stick with the command listed above:
regsvr32 -i <dllname>.dll
Once you've done this try running the application again.
If you're still having problems then I would suggest uninstalling the DLL again and then go through the registry looking for any entries for your DLL that may not have been removed/uninstalled properly. If there are entries in your registry referencing any old DLL (that no longer exists) then you're going to have problems.
Once you have uninstalled the COM object and cleaned your registry of it try registering your new one using regsvr32.
Please note that 32 bit com objects have to exist in a specific folder on 64 bit operating systems in order to run....
Also please note that the folder that the COM object is placed into must be accessible to the ASPNET application (especially if the COM object is reading/writing files etc). The folder that 32bit DLLs run in on a 64 bit operating system cannot be given permissions that let the ASPNET user account gain access to it,
I have switched back to a 32 bit server because I was unsuccessful in setting permissions that allowed my asp.net application access to essential 32 bit COM components.
Also, if your COM object is really a true com component (not developed using .NET code) then regasm will not work.
I guess I could have summed everything up into 2 points:
- Make sure that you uninstall All old versions of the DLL before attempting to install the new one
- Make sure that your ASPNET user account (the account under which your ASP.NET application runs) has permissions to access the COM object
I think the second point is probably what's giving your problems here :) mainly because whenever I see 80040154 errors I can fix them by setting the appropriate permissions on the DLL....I see 0x80004002 when things aren't installed/referenced properly.