Usuário com melhor resposta
Não estou conseguindo usar a dll do vb6 no .net 2005

Pergunta
-
Eu li os tópicos parecidos mas não consegui fazer essa importação.Eu que consegui fazer foi adcionar como referência a dll e conseguir que o .net reconhecesse algumas funções. Só que ao executar a função dá o seguinte erro:System.Web.Services.Protocols.SoapException: O servidor não pôde processar a solicitação. ---> System.Runtime.InteropServices.COMException (0x80040154): Falha na recuperação de factory de classes COM do componente com CLSID {EB053141-9AD9-4EF3-AEDB-920E99FFBBE6} devido ao seguinte erro: 80040154.
em Service.HelloWorld()Alguém pode me dizer qual o processo correto para utilizar uma dll compilada em vb6 no .net 2005 (C#)?
Respostas
-
Danilo,
O post abaixo deve resolver o seu problema. Provavelmente a sua conta ASPNET não possui direito de acesso ao componente COM. Você deve dar direitos para essa conta no Component Services do Windows.
http://forums.asp.net/t/1249300.aspx
Att.
Ari C. Raimundo
Todas as Respostas
-
Danilo,
Existem 3 maneiras de utilizar objetos COM dentro do .NET:
1 - Utilizando um RCW (Runtime Callable Wrapper).
2 - Utilizando TypeLibraryImporter para criar um assembly do componente COM.
3 - Fazer referência direta ao componente direto do Visual Studio.
Mais referências de como utilizar as 3 opções você encontra no link abaixo:
http://msdn.microsoft.com/en-us/library/ms973800.aspx
Para resolver seu problema preciso que você mostre aqui quais os métodos existentes no seu componente COM. Provavelmente você está instanciando o objeto erroneamente ou não possui uma conta de usuário com direitos para tal.
Espero ter ajudado.
Att.Ari C. Raimundo
-
Ari,Obrigado pelo link. Eu tinha feito do jeito mais fácil (Criando uma referencia direto no visual studio) e continua dando o mesmo erro. O componente possui vários métodos e o mais simples é esse (em VB6):Função no VB6----------------------------------------------------------------------------------------------------Public Function Versao() As StringVersao = App.Major & "." & App.Minor & "." & App.RevisionEnd Function----------------------------------------------------------------------------------------------------Eu criei um WebService incluindo esse componente e tentei acessar por um website.WebService-----------------------------------------------------------------------------------------------------<WebMethod()> _Public Function HelloWorld() As StringDim captador As New CaptadorTS_VAL.VALIDAReturn captador.Versao()End Function-----------------------------------------------------------------------------------------------------WebSite-----------------------------------------------------------------------------------------------------Dim captador As New localhost.ServicelblResultado.Text = captador.HelloWorld()-----------------------------------------------------------------------------------------------------e dá o erro:---------------------------------------------------------------------------------------------------System.Web.Services.Protocols.SoapException: O servidor não pôde processar a solicitação. ---> System.Runtime.InteropServices.COMException (0x80040154): Falha na recuperação de factory de classes COM do componente com CLSID {EB053141-9AD9-4EF3-AEDB-920E99FFBBE6} devido ao seguinte erro: 80040154.
em Service.HelloWorld()---------------------------------------------------------------------------------------------------Resolvi criar a referencia direto no web site:WebSite---------------------------------------------------------------------------------------------------Dim captador As New localhost.ServicelblResultado.Text = captador.HelloWorld()---------------------------------------------------------------------------------------------------e dá o seguinte erro:---------------------------------------------------------------------------------------------------Falha na recuperação de factory de classes COM do componente com CLSID {EB053141-9AD9-4EF3-AEDB-920E99FFBBE6} devido ao seguinte erro: 80040154.---------------------------------------------------------------------------------------------------Tem idéia do que seja? -
Danilo,
O post abaixo deve resolver o seu problema. Provavelmente a sua conta ASPNET não possui direito de acesso ao componente COM. Você deve dar direitos para essa conta no Component Services do Windows.
http://forums.asp.net/t/1249300.aspx
Att.
Ari C. Raimundo
-