NathanMgnet Postado 8 Fevereiro Compartilhar Postado 8 Fevereiro Boa tarde Desenvolvemos uma aplicação para emissão de documentos fiscais em Delphi que atualmente está executando em um servidor UBUNTU Quando executo a aplicação em uma máquina windows tudo acontece corretamente, inclusive quando existe um erro em "ACBrNFe.NotasFiscais.Validar" consigo capturar a exceção e tratar para por exemplo exibir ao usuário O fato é que ao criar a mesma exceção executando em linux o retorno sempre é "access violation", assim não consigo exibir de maneira clara para o usuário a exceção que está acontecendo Uma nota sem erros é autorizada perfeitamente no linux, mas quando tem erros no xml a mensagem sempre é "access violation" O erro acontece em TDFeSSL.Validar Estou usando a seguinte configuração quando compilado para linux: ACBrNFe.Configuracoes.Geral.SSLCryptLib := cryOpenSSL; ACBrNFe.Configuracoes.Geral.SSLHttpLib := httpOpenSSL; ACBrNFe.Configuracoes.Geral.SSLXmlSignLib := xsLibXml2; E como dito, no windows, a mesma situação resulta em uma mensagem de erro específica Existe alguma configuração que eu deva fazer para corrigir essa situação? Desde já agradeço Link para o comentário Compartilhar em outros sites More sharing options...
Moderadores Juliomar Marchetti Postado 8 Fevereiro Moderadores Compartilhar Postado 8 Fevereiro NOGUI declarou? e está gerando log da aplicação pra poder usar? outra coisa seta só o SSLLib Openss e o SSLType para tls 1.2 os demais o acbr já sabe que fazer Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br Link para o comentário Compartilhar em outros sites More sharing options...
NathanMgnet Postado 8 Fevereiro Autor Compartilhar Postado 8 Fevereiro Agradeço a resposta Pelo oq entendi vc sugere o seguinte código: ACBrNFe.Configuracoes.Geral.SSLLib := libOpenSSL; ACBrNFe.SSL.SSLType := LT_TLSv1_2; Fiz essa alteração e o erro persiste Não tenho muita prática com ACBr, então não entendi o que vc quis dizer com NOGUI. Link para o comentário Compartilhar em outros sites More sharing options...
Moderadores Juliomar Marchetti Postado 8 Fevereiro Moderadores Compartilhar Postado 8 Fevereiro mas no caso o que falei é de projeto Delphi tu tem que colocar no define do projeto NOGUI Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br Link para o comentário Compartilhar em outros sites More sharing options...
NathanMgnet Postado 8 Fevereiro Autor Compartilhar Postado 8 Fevereiro Eu adicionei essa diretiva no projeto e testei com o código: {$IFDEF NOGUI} writeln('NOGUI ATIVADO'); {$ENDIF} A mensagem "NOGUI ATIVADO" é exibida no terminal indicando que a diretiva está correta Mas o erro persiste Notas sem erro são autorizadas Notas com erro no XML retornam sempre ACCESS VIOLATION Link para o comentário Compartilhar em outros sites More sharing options...
NathanMgnet Postado 8 Fevereiro Autor Compartilhar Postado 8 Fevereiro Uma informação que talvez seja relevante A mensagem correta do erro é exibida no terminal, mas não consigo capturá-la com: try ... except on e: Exception do begin ... end; end; Link para o comentário Compartilhar em outros sites More sharing options...
Moderadores Juliomar Marchetti Postado 8 Fevereiro Moderadores Compartilhar Postado 8 Fevereiro depura. o dephi deixa fazer isso. coloca ponto de parada e vai depurando até chegar Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br Link para o comentário Compartilhar em outros sites More sharing options...
NathanMgnet Postado 8 Fevereiro Autor Compartilhar Postado 8 Fevereiro (editado) Isso é muito óbvio e já foi feito Na unit ACBrNFeNotasFiscais, método NotaFiscal.Validar, na seguinte linha de código: NotaEhValida := SSL.Validar(AXML, GerarNomeArqSchema(ALayout, VerServ), Erro); O depurador não entra neste método SSL.Validar Quando estou no windows a variável NotaEhValida receber o valor FALSE e o programa continua Quando estou no linux esse trecho dá bug de access violation Editado 8 Fevereiro por NathanMgnet Link para o comentário Compartilhar em outros sites More sharing options...
NathanMgnet Postado 8 Fevereiro Autor Compartilhar Postado 8 Fevereiro No tópico abaixo é feita uma explicação por Daniel Simoes sobre como usar acbr no linux, porém com Lazarus https://www.projetoacbr.com.br/forum/topic/57844-acbr-linux-lazarus-console/#comment-379287 Existe alguma instrução semelhante para Delphi? Link para o comentário Compartilhar em outros sites More sharing options...
Moderadores Juliomar Marchetti Postado 8 Fevereiro Moderadores Compartilhar Postado 8 Fevereiro 13 minutos atrás, NathanMgnet disse: Isso é muito óbvio e já foi feito Na unit ACBrNFeNotasFiscais, método NotaFiscal.Validar, na seguinte linha de código: NotaEhValida := SSL.Validar(AXML, GerarNomeArqSchema(ALayout, VerServ), Erro); O depurador não entra neste método SSL.Validar Quando estou no windows a variável NotaEhValida receber o valor FALSE e o programa continua Quando estou no linux esse trecho dá bug de access violation Schemas estão no mesmo nível de sua aplicação? ele está ocorrendo algum erro na leitura do schemas Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br Link para o comentário Compartilhar em outros sites More sharing options...
NathanMgnet Postado 8 Fevereiro Autor Compartilhar Postado 8 Fevereiro Schemas está na pasta correta Até pelo fato de que notas sem erro de XML são transmitidas perfeitamente O problema é apenas em notas com erro no XML Exemplo de erro que no linux aparece como access violation mas no windows não: Falha na validação dos dados da nota: 54 TAG:<det nItem="1"><imposto><ICMS><ICMSSN> ID:N12a/CSOSN(Código de Situação da Operação – Simples Nacional) - Nenhum valor informado. Link para o comentário Compartilhar em outros sites More sharing options...
Moderadores Juliomar Marchetti Postado 8 Fevereiro Moderadores Compartilhar Postado 8 Fevereiro 50 minutos atrás, NathanMgnet disse: Isso é muito óbvio e já foi feito Na unit ACBrNFeNotasFiscais, método NotaFiscal.Validar, na seguinte linha de código: NotaEhValida := SSL.Validar(AXML, GerarNomeArqSchema(ALayout, VerServ), Erro); O depurador não entra neste método SSL.Validar Quando estou no windows a variável NotaEhValida receber o valor FALSE e o programa continua Quando estou no linux esse trecho dá bug de access violation viu nesse metodo conseguiu ir mais pra dentro ver? Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br Link para o comentário Compartilhar em outros sites More sharing options...
NathanMgnet Postado 9 Fevereiro Autor Compartilhar Postado 9 Fevereiro O erro acontece em ACBrDFeXsLibXml2 no seguinte método: function TDFeSSLXmlSignLibXml2.TentaPegarMensagemErroDetalhada(const MsgErroAtual: string): String; var prtUltimoErroXml: xmlErrorPtr; begin Result := ''; prtUltimoErroXml := xmlGetLastError(); if (prtUltimoErroXml <> nil) then begin Result := MsgErroAtual + ' --> ' + IntToStr(prtUltimoErroXml^.code) + ' - ' + prtUltimoErroXml^.message; end else Result := MsgErroAtual; end; Quando eu removo "prtUltimoErroXml^.message" do retorno o programa funciona corretamente, retornando ao usuário o erro real presente no xml Mas se deixar "prtUltimoErroXml^.message" acontece o "Access Violation" Lembrando que isso acontece apenas no linux, pois no windows tudo funciona corretamente Link para o comentário Compartilhar em outros sites More sharing options...
NathanMgnet Postado 9 Fevereiro Autor Compartilhar Postado 9 Fevereiro No tópico abaixo é feita uma explicação por Daniel Simoes sobre como usar acbr no linux, porém com Lazarus https://www.projetoacbr.com.br/forum/topic/57844-acbr-linux-lazarus-console/#comment-379287 Existe alguma instrução semelhante para Delphi? Link para o comentário Compartilhar em outros sites More sharing options...
datilas Postado 9 Fevereiro Compartilhar Postado 9 Fevereiro vc tem libxml2 e libxml2-devel instalado? Link para o comentário Compartilhar em outros sites More sharing options...
NathanMgnet Postado 9 Fevereiro Autor Compartilhar Postado 9 Fevereiro Boa tarde Grato pela resposta No servidor linux foram executados os comandos: sudo apt-get install libssl-dev libxml2-dev sudo apt-get install libxml2 No servidor existem arquivos da libxml2 (conforme anexo) O programa está executando em outra pasta onde existem apenas o programa em si e pasta Schemas Link para o comentário Compartilhar em outros sites More sharing options...
Recommended Posts
Crie uma conta ou entre para comentar
Você precisar ser um membro para fazer um comentário
Criar uma conta
Crie uma nova conta em nossa comunidade. É fácil!
Crie uma nova contaEntrar
Já tem uma conta? Faça o login.
Entrar Agora