none
Access is denied RRS feed

  • Pergunta

  • Boa tarde a todos,

    Estou enfrentando um problema com o COM+, que gera erro "Access is denied".

    Possuo uma DLL desenvolvida em VB.Net (COMClass) e portada para o COM+ através do comando: regsvcs /fc MinhaDLL.dll Este comando eu executo no Servidor1.

    A partir deste ponto, solicito a criação de um "Export" para criar uma classe proxy para ser instalada em outro servidor, Servidor2.

    No momento de gerar o Export, quando seleciono o item "Server Application", e instalo o Export no Servidor2, tudo funciona correto. Neste ponto entendo que a dll foi instalada no Servidor2, mas, não gera proxy ficando tudo local no Servidor2.

    Mas, quando seleciono Application Proxy e instalo no Servidor2, toda vez que minha aplicação VB.Net vai instanciar a classe, gera o erro "Access is denied". Desta forma, realmente existe um proxy entre as duas máquinas.

     

    Por favor, alguém sabe como isso pode ser corrigido?

    Para adiantar e que não funcionou:

    - Já atribuí o usuário servidor da máquina Servidor1;

    - Já atribuí o usuário na pasta física onde está a dll no Servidor1.

     

    Muito obrigado,

     

    José Roberto Ferro.

    terça-feira, 3 de abril de 2007 19:55

Respostas

  • Oi Dennes,

     

    Consegui fazer funcionar. Existiam mais detalhes que eu desconhecia.

    Veja se bate com o seu conhecimento e também do pessoal:

    - Componente VB.Net (COMClass), mas utilizando parametros string(,) multidimensional. Não sei exatamente o porque disso, mas, quando voltei a utilizar parametro string simples, funcionou;

    - Atribuir um usuário/senha específico noServidor1, exportar o pacote, criar o mesmo usuário/senha no Servidor2, registrar o Export, configurar o usuário/senha para o pacote.

     

    Fazendo isso, o meu componente funcionou corretamente.

    Como desde o início da programação optei por utilizar parametro multidimensional, isso foi a última coisa que pensei em alterar.

    Quando mudei para parametro simples, funcionou.

     

    Muito obrigado pela ajuda e fica a dica para quem precisar.

     

    Abraços,

     

    José Roberto Ferro

    quarta-feira, 4 de abril de 2007 20:56

Todas as Respostas

  • Oi !

     

    Já tentou ir em componentServices, no pacote do servidor1, desabilitar a segurança de acesso ao pacote e fazer novo export com a segurança desabilitada ?

     

    []'s

     

    terça-feira, 3 de abril de 2007 20:10
  • Oi Dennes,

    Quando desabilito a segurança, ocorre outro erro:

    Exception from HRESULT: 0x80131040

     

    E o Stack Trace da página é:

    [FileLoadException: Exception from HRESULT: 0x80131040.]

    System.Runtime.InteropServices.Marshal.ThrowExceptionForHR(....)

    System.EnterpriseServices.Thunk.Proxy.CoCreateObject(.....)

    System.EnterpriseServices.ServicedComponentProxyAttribute.CreateInstance(.....)

    System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(.....)

    Pagina.Button1_Click(...)

    ....

    E por aí vai.

     

    Os outros tipos de segurança, geram o erro inicial: Access is denied.

     

    Alguma outra sugestão?

    Uma literatura para este tipo de problema na Internet é muito difícil de achar.

     

    Muito obrigado,

     

    José Roberto Ferro.

    terça-feira, 3 de abril de 2007 21:43
  • Oi !

     

    Esse erro é um progresso em relação ao Access Denied, então sugiro trabalhar a partir dele.

     

    O erro é FileLoadException, então a pergunta : A dll .NET está no GAC ?

     

    []'s

     

    terça-feira, 3 de abril de 2007 21:50
  • Oi Dennes,

     

    Sim, a dll está no GAC, nos dois servidores.

    Quando instalo o Export no Servidor2, é adicionada a dll no GAC.

     

    Obrigado,

     

    José Roberto Ferro.

    quarta-feira, 4 de abril de 2007 18:01
  • Oi Dennes,

     

    Consegui fazer funcionar. Existiam mais detalhes que eu desconhecia.

    Veja se bate com o seu conhecimento e também do pessoal:

    - Componente VB.Net (COMClass), mas utilizando parametros string(,) multidimensional. Não sei exatamente o porque disso, mas, quando voltei a utilizar parametro string simples, funcionou;

    - Atribuir um usuário/senha específico noServidor1, exportar o pacote, criar o mesmo usuário/senha no Servidor2, registrar o Export, configurar o usuário/senha para o pacote.

     

    Fazendo isso, o meu componente funcionou corretamente.

    Como desde o início da programação optei por utilizar parametro multidimensional, isso foi a última coisa que pensei em alterar.

    Quando mudei para parametro simples, funcionou.

     

    Muito obrigado pela ajuda e fica a dica para quem precisar.

     

    Abraços,

     

    José Roberto Ferro

    quarta-feira, 4 de abril de 2007 20:56