Ir para conteúdo
  • Cadastre-se

  • Este tópico foi criado há 850 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

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

  • Consultores
Postado

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

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado

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.

  • Consultores
Postado

mas no caso o que falei é de projeto Delphi

tu tem que colocar no define do projeto NOGUI

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado

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

Postado

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;

 

  • Consultores
Postado

depura. o dephi deixa fazer isso.

coloca ponto de parada e vai depurando até chegar

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado (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 por NathanMgnet
  • Consultores
Postado
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

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado

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.
  • Consultores
Postado
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?

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado

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

Postado

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

  • Este tópico foi criado há 850 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

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.