Ir para conteúdo
  • Cadastre-se

dev botao

Erro ACBr em linux


Recommended Posts

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

  • Moderadores

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

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

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

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

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 por NathanMgnet
Link para o comentário
Compartilhar em outros sites

  • Moderadores
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

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

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

  • Moderadores
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?

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

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

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

 

A.PNG

Link para o comentário
Compartilhar em outros sites

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 conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.