Chamando aplicação Exe pelo asp.net c#

586 views
Skip to first unread message

Antonio Marinho

unread,
Apr 14, 2016, 10:38:39 AM4/14/16
to DotNet Brasil
Bom dia colegas.
Tenho uma aplicação Asp.net c# rodando em um servidor windows 2008 64 bits.
Desenvolvi uma aplicação em c# que cria um arquivo xml em um diretório de minha estação de trabalho, utilizando uma dll desenvolvida em VB6. A aplicação está rodando sem problemas ao ser chamada pelo windows ou prompt de comando. Porém, ao ser invocada pelo Process.start(aplicação) no Asp.net c# que está no servidor, o mesmo é chamado e não executa a geração do xml. Verifiquei que a aplicação fica aberta no gerenciador de tarefas do windows e não gera nem fecha a aplicação. Alguém sabe como resolver este problema ?

Antonio Marinho

Rubem Rocha

unread,
Apr 14, 2016, 10:46:37 AM4/14/16
to dotn...@googlegroups.com

Essa aplicação que você chama é Windows forms ou console?

--
==============================
Comunidade de desenvolvedores Dot Net no Brasil

Facebook: www.facebook.com/grupodotnetbr

WebSite: www.dotnetbr.com

E-mail do Grupo: dotn...@googlegroups.com
==============================
---
You received this message because you are subscribed to the Google Groups "DotNet Brasil" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dotnet_br+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Zaquiel Grings

unread,
Apr 14, 2016, 2:38:01 PM4/14/16
to dotn...@googlegroups.com
Chegou a ver o log do windows se não tem nenhuma mensagem de erro da aplicação?
--
Zaquiel Grings

“Existem dois tipos de pessoa: as que fazem o trabalho e as que recebem o crédito. Tente estar no primeiro grupo, tem menos competição aqui.”

Antonio Marinho

unread,
Apr 14, 2016, 3:09:24 PM4/14/16
to DotNet Brasil
boa tarde.
é windows forms

Antonio Marinho

unread,
Apr 14, 2016, 3:09:24 PM4/14/16
to DotNet Brasil
Verifiquei o Log do Windows, nada de erro. O arquivo .Exe simplesmente fica parado no gerenciador de arquivos do Windows e não executa nada. Se executo pelo pronpt, ele roda e fecha normalmente

Zaquiel Grings

unread,
Apr 14, 2016, 3:24:06 PM4/14/16
to DotNet Brasil
Tenta implementar algum tipo de log nele, pode ser algum tipo de permissão.

:/

Antonio Marinho

unread,
Apr 14, 2016, 3:40:12 PM4/14/16
to DotNet Brasil
Ja fiz, passando parametros pelo ProcessStartInfo, não resolveu

Bruno Fernandes

unread,
Apr 14, 2016, 3:42:27 PM4/14/16
to Dot Net Brasil
Antonio, boa tarde!

A política de segurança padrão do .Net não permite que a aplicação asp.net inicie um executável se ele não tiver sido previamente liberado na politica de segurança.

Tente procurar por caspol fully trust no google que você vai ter o caminho pra fazer isso funcionar.




Atenciosamente,

Antonio Marinho

unread,
Apr 14, 2016, 4:37:02 PM4/14/16
to DotNet Brasil
Valeu Brunão, vou dar uma olhada

Antonio Marinho

unread,
Apr 14, 2016, 4:52:42 PM4/14/16
to DotNet Brasil
Bruno, já desenvolveu algo semelhante a esta minha aplicação ?
Um asp.net c# chamando um executável(tbm c#) ? Optei por esta alternativa pois quando faço a referência as Dlls que foram desenvolvidas em VB6 pela aplicação, da erro no servidor 64 bits e as Dlls são 32 bits. Ao fazer a referencia, o nome da Dll vem como Interop.nome.dll. Até que executando pelo visual studio, as funções são carregadas, mas no ambiente do IIS, não roda de jeito nenhum, mesmo registrando no windows\syswow64

Estou tentando resolver essa parada aqui

Luiz Estevam

unread,
Apr 14, 2016, 4:58:50 PM4/14/16
to dotn...@googlegroups.com
Antonio, não sei se é o caso mas já tentou alterar o IIS para aceitar aplicativos 32Bits?
Exemplo:


Luiz Estevam Barros
lest...@gmail.com

Antonio Marinho

unread,
Apr 15, 2016, 6:12:20 AM4/15/16
to DotNet Brasil
Tive essa sugestão, mas tenho outras aplicações como o painel de chamadas hospitalares neste servidor que são 64 bits e se alterar, essas outras aplicações param.

angelo

unread,
Apr 15, 2016, 7:46:10 AM4/15/16
to dotn...@googlegroups.com

Minha sugestao... bom dia,

Cria um pool separado no servidor, cria o site nele e coloca em 32 bits. Assim nao param as outras aplicações

Exe chamado pelo iis até hoje só tinha visto cgi/bin, que é programado exatamente pra funcionar desta forma

App com form chamado pelo iis nunca tinha visto

angelo

Zaquiel Grings

unread,
Apr 15, 2016, 7:52:02 AM4/15/16
to dotn...@googlegroups.com
Eu já tinha ouvido falar que funcionava, inclusivo quando precisei fazer algo similar meu chefe na época tentou me convencer a fazer assim. Mas optei por criar um serviço do windows que monitorava uma tabela e processava de tempos em tempos. Para evitar problemas de permissões, etc.

Renato Cantarino

unread,
Apr 15, 2016, 7:54:42 AM4/15/16
to dotn...@googlegroups.com
Pronto, o Zaquiel falou algo correto.
Sou contra sistema Web chamar aplicações locais, isso me cheira a treta por vários motivos.
Eu criaria um serviço agendado, ou ate mesmo um console app com signalR escutando uma tabela de eventos do banco, usando broken.


Att,
Renato Cantarino

Antonio Marinho

unread,
Apr 15, 2016, 8:39:28 AM4/15/16
to DotNet Brasil
Valeu meus camaradas. A proposta de criar o pool de aplicativos no servidor e colocar para rodar em 32 bits é bem viável uma vez que todas as aplicações web que desenvolvi são 64 bits. Vou fazer isso e postar aqui no fórum para o caso de algum colega vir a enfrentar este mesmo problema. 

Antonio Marinho

unread,
Apr 15, 2016, 11:02:29 AM4/15/16
to DotNet Brasil
Bom dia Senhores. Criei o pool de aplicativos 32 bits e minha aplicação está rodando chamando as dlls em vb32 bits direto de minah aplicação, porém está apresentando um erro de permission denied, segue o erro
Sys.WebForms.PageRequestManagerServerErrorException: Permission denied

Acredito que seja no momento em que a aplicação chama a DLL para gerar o arquivo xml no diretório de destino. Como posso corrigir?
Verifiquei nos logs do windows e segue esta informação em xml

- <System>
  <Provider Name="ASP.NET 4.0.30319.0" />
  <EventID Qualifiers="16384">1314</EventID>
  <Level>4</Level>
  <Task>3</Task>
  <Keywords>0x80000000000000</Keywords>
  <TimeCreated SystemTime="2016-04-15T14:47:01.000000000Z" />
  <EventRecordID>115428</EventRecordID>
  <Channel>Application</Channel>
  <Computer>INFSHA00138.hospitalamerica.local</Computer>
  <Security />
  </System>
- <EventData>
  <Data>4010</Data>
  <Data>Ocorreu uma exceção de segurança não tratada.</Data>
  <Data>15/04/2016 11:47:01</Data>
  <Data>15/04/2016 14:47:01</Data>
  <Data>84f1ef7501fa49df82c4db311cec8c00</Data>
  <Data>83</Data>
  <Data>2</Data>
  <Data>0</Data>
  <Data>/LM/W3SVC/1/ROOT/PainelCir-2-131052040423210886</Data>
  <Data>Full</Data>
  <Data>/PainelCir</Data>
  <Data>C:\Inetpub\PainelCir\</Data>
  <Data>INFSHA00138</Data>
  <Data />
  <Data>3828</Data>
  <Data>w3wp.exe</Data>
  <Data>IIS APPPOOL\Portalteste</Data>
  <Data>/PainelCir/CCHJ.aspx</Data>
  <Data>192.168.1.173</Data>
  <Data />
  <Data>False</Data>
  <Data />
  <Data>IIS APPPOOL\Portalteste</Data>
  </EventData>
  </Event>
Este usuário do IIS já esta com permissão na pasta de destino, que foi concedida quando estava tentando rodar a aplicação no servidor 64 bits, tenho que conceder nova permissão ?

Att

angelo

unread,
Apr 15, 2016, 11:12:20 AM4/15/16
to dotn...@googlegroups.com

Srs, 

Eu arriscaria dizer que seria permissão da conta que executa o processo IIS que executa o site do colega, não estar conseguindo chamar o executável.

Tive um problema que, não diria parecido, mas que dava o mesmo erro, o erro era parecido,  em um sistema web que nem era nosso, era de um fabricante, precisava enviar arquivo para uma impressora de etiquetas na rede. É isso mesmo que os srs leram... o servidor web estava com um compartilhamento na rede compartilhado. Foi sugestao deles aliás.


Lembra do pool de 32 bits que vc criou mais cedo ? Veja, é possivel também definir a conta que roda o processo do IIS, ao inves de rodar como IUSR padrão, pode rodar com uma conta de computador qualquer, com poucas permissoes de preferencia (nada de admin),  tem la uma das opções na abinha, tem que escrever o nome da conta... do tipo computador\conta  

De tarde eu vou olhar no servidor qual foi o nome exatamente e palpito aqui novamente

angelo


--

Antonio Marinho

unread,
Apr 15, 2016, 4:43:56 PM4/15/16
to DotNet Brasil
Boa tarde.

Criei no servidor 64 novo pool de alicativos.
Com a opção habilitar aplicativos 32 bits como false, a aplicação roda sem problemas, porém quando é alterado para true, dá o erro :

Erro HTTP 500.19 - Internal Server Error

A página solicitada não pode ser acessada porque os dados de configuração relacionados à página são inválidos.


O servidor windows server 2008 R2 não está aceitando esta configuração para 32 bits havilitada no pool de aplicativos
Alguma outra ideia? rrs

Antonio Marinho

unread,
Apr 27, 2016, 9:38:57 AM4/27/16
to DotNet Brasil
Bom dia Caros.

Alguém já trabalhou com Com+?
Gerei um componente Com+ com uma DLL gerada em VB6 e agora estou querendo referencia-la em um projeto ASP.net c#. Só não estou localizando onde está este componete COM+ que foi gerado. Alguém já utilizou ?


Em quinta-feira, 14 de abril de 2016 11:38:39 UTC-3, Antonio Marinho escreveu:

Gustavo Cruz

unread,
Apr 27, 2016, 10:29:43 AM4/27/16
to dotn...@googlegroups.com
Normalmente as referências do GAC já aparecem na aba Assemblies do VS. Dá uma conferida pra ver se o seu componente já está devidamente instalado e se ele aparece no GAC.

--

Antonio Marinho

unread,
Apr 27, 2016, 10:56:18 AM4/27/16
to DotNet Brasil
Bom dia Gustavo, 

Ai que está o problema. Quando vou no meu projeto ASP.Net, e vou criar a referencia, seleciono Com e o aplicativo que criei, não aparece.
Se vou em ferramentas administrativas/serviços de componentes la esta o componente criado e ativo. Precisa registrar esse aplicativo para aparecer como as dlls ?

Marcus Alexandre Silva

unread,
Apr 27, 2016, 2:45:55 PM4/27/16
to dotn...@googlegroups.com
Tem muitos anos que voce fez isto em VB6? Se for algo recente voce não pode escreve-los em VB.net ou C#? Com+ já não é uma boa opção ha alguns anos....

Antonio Marinho

unread,
Apr 28, 2016, 4:57:09 PM4/28/16
to DotNet Brasil
Ja resolvi

Rubem Rocha

unread,
Apr 28, 2016, 4:58:24 PM4/28/16
to dotn...@googlegroups.com

Como resolveu???

Mark Gonçalves

unread,
May 8, 2016, 10:18:21 PM5/8/16
to Dotnet Br
Como resolveu???


Mark Gonçalves


Algumas das maiores façanhas do mundo foram feitas por pessoas que não eram suficientemente espertas, para saber que elas eram impossíveis.


Antonio Marinho

unread,
May 9, 2016, 10:59:16 AM5/9/16
to DotNet Brasil
Desenvolvi em minha aplicação .net, uma rotina que gera o numero do atendimento que necessito que seja executado a dll. Esta rotina gera um txt com este número em um diretório da rede. desenvolvi um sistema Robô em c# que le de tempos em tempos este diretório, pega este arquivo txt com o número que gerei, e insere na rotina de Dll em VB6 que preciso que execute. Está funcionando 100%. Obrigado a todos
Reply all
Reply to author
Forward
0 new messages