none
Erro ao acessar DLL VB6 RRS feed

  • Pergunta

  • Pessoal tenho um DLL em VB6 que funciona perfeitamente com Windows Forms, mas com ASP.NET MVC da erro de Permission Denied ao executar um método.

    Alguma idéia.

    Obrigado.

    Alexandre

    terça-feira, 12 de março de 2013 00:48

Respostas

  • Nesse caso a DLL foi compilada para ser executada em ambiente 32 bits.

    Você pode tentar configurar o pool de aplicações no IIS para 32 bits e verificar se funciona.

    terça-feira, 12 de março de 2013 18:14
    Moderador

Todas as Respostas

  • Você tem que adicionar a referência no seu projeto como um COM.

    Depois vá nas propriedades da dll no visual studio e mude a opção:

    Embed Interop Types para true

    Funciona para  WCF, avise aqui se funcionar no seu caso também em MVC.


    terça-feira, 12 de março de 2013 04:37
    Moderador
  • João, já estava desse jeito que você falou.

    O interessante é que em outra máquina XP 32 bits funciona, no meu Windows 7 64 bits não funciona. Mudei o build para x86 e também não funciona. No Microsoft Visual C# 2010 Express com Windows Forms funciona.

    Abraço.

    terça-feira, 12 de março de 2013 12:16
  • Nesse caso a DLL foi compilada para ser executada em ambiente 32 bits.

    Você pode tentar configurar o pool de aplicações no IIS para 32 bits e verificar se funciona.

    terça-feira, 12 de março de 2013 18:14
    Moderador
  • É 32 bits mesmo. VB6. Mudei o pool e nada.

    olha o erro

    System.Security.SecurityException was unhandled by user code
      Message=Permission denied
      Source=PLPadrao
      StackTrace:
           at PlacompDLL._FPreco.CalculaPreco()
           at pedidosWeb.Controllers.CalculaPreco.CalcPreco(String cgccli, String codemp, String numpve) in \web\pedidosWeb\Controllers\CalculaPreco.cs:line 214
           at pedidosWeb.Controllers.PedidosItemController.getPedidosItem() in \PedidosItemController.cs:line 608
           at pedidosWeb.Controllers.PedidosItemController.Index() in \PedidosItemController.cs:line 20
           at lambda_method(Closure , ControllerBase , Object[] )
           at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
           at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
           at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
           at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12()
           at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
      InnerException:

    terça-feira, 12 de março de 2013 20:22
  • Bom. descobri o problema. o erro estava em um acesso ao registro do sistema que a dll queria fazer. não havia o dado necessário e dava o erro.

    Muito Obrigado.

    terça-feira, 12 de março de 2013 21:00