From .Net Framework 3.5 can't call vb6 dll. Re

2019-07-14 19:30发布

问题:

I try to istanciate a Com dll(developped in VB6) from a ".Net Framework 3.5 Dll Library Project" and I get the following error:

Retrieving the COM class factory for component with CLSID {...} failed due to the following error: 800aea5f.

On the same machine I try to istanciate the COM dll from a VBScript and it's work fine. In addition I tried to unregister and re-register the dll without good results.

Now from a windows applcation .net 3.5 I can istanciate the COM dll but it's impossible to do from a web application (also with and without impersonate configuration into web.config)

DCOM properties: General --> Authentication = Default Security --> All properties = Default Identity --> Identity = The launcher user

Any suggestions?

回答1:

Is this machine an x64 server? If so are you sure that your .NET Assembly is marked as force x86? If its marked as AnyCPU and you attempt to run it on an x64 machine you will load as an x64 assembly which will then fail to load your VB6 Dll because you can only run in 32bit mode...



回答2:

The error is link to User Permissions.

The call's tree is: WebApplication --> WcfService --> .Net 3.5 dll --> COM dll

Even if I set a local user impersonation on WebApplication web.config, WcfService use the user associate to VirtualDirectory's Application Pool that is "NETWORK SERVICE".

Just I change ApplicationPool's Default User to LocalSystem the call to COM work fine



标签: .net com vb6