none
Não estou conseguindo usar a dll do vb6 no .net 2005 RRS feed

  • 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#)?
    terça-feira, 16 de setembro de 2008 19:27

Respostas

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

     

    quarta-feira, 17 de setembro de 2008 02:10
  • 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 String
       Versao = App.Major & "." & App.Minor & "." & App.Revision
    End Function
    ----------------------------------------------------------------------------------------------------

    Eu criei um WebService incluindo esse componente e tentei acessar por um website.

    WebService
    -----------------------------------------------------------------------------------------------------
      <WebMethod()> _
        Public Function HelloWorld() As String
            Dim captador As New CaptadorTS_VAL.VALIDA
            Return captador.Versao()
        End Function
    -----------------------------------------------------------------------------------------------------

    WebSite
    -----------------------------------------------------------------------------------------------------
            Dim captador As New localhost.Service
            lblResultado.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.Service
            lblResultado.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?

    quarta-feira, 17 de setembro de 2008 13:06
  • 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

    quarta-feira, 17 de setembro de 2008 17:02
  • Consegui. Muito obrigado pelas dicas. Agora vou tentar organizar as coisas aqui.
    quarta-feira, 17 de setembro de 2008 18:34