Ir para conteúdo
  • Cadastre-se

dev botao

Recommended Posts

  • Membros Pro
Postado

Prezados, bom dia !

Preciso de um apoio. Tenho um serviço que roda em um container docker, e ao verificar o log de execução, encontrei o seguinte problema:

Sessão não [%s] existe no arquivo de configuração

Segue detalhes do erro.

info: Dfe.Monitor.CapturaCte.Workers.CapturaCte.CapturaCteWorker[0]
      [MONITOR_CAPTURA_CTE][2024-08-28 11:02:33] Iniciando processamento da empresa [10194] - CNPJ: 53266121000146, Razão Social: AC TREINAMENTOS LTDA
fail: Dfe.Monitor.CapturaCte.Workers.CapturaCte.CapturaCteWorker[0]
      [08/28/2024 11:02:33][MONITOR_CAPTURA_CTE][2024-08-28 11:02:33] Erro ao processar documento fiscal. Exceção: Sessão não [%s] existe no arquivo de configuração - Exceção interna:  - StackTrace:    at Keevo.Pacotes.Infra.ACBrLib.Core.ACBrLibHandle.CheckResult(Int32 ret)
         at Keevo.Pacotes.Infra.ACBrLib.CTe.ACBrCTe.ConfigGravarValor(ACBrSessao eSessao, String eChave, Object value)
         at Keevo.Pacotes.Infra.ACBrLib.Core.Config.ACBrLibConfigBase`1.SetProperty[TProp](TProp newValue, String propertyName)
         at Keevo.Pacotes.Infra.ACBrLib.Core.Config.DFeConfig`1.set_SSLCryptLib(SSLCryptLib value)
         at Dfe.Monitor.CapturaCte.Servicos.AcbrCTeServico.ConfigurarCertificado(ACBrCTe acbrCTe, CertificadoPorParametrosModel certificadodigitalkeevo) in /src/Servicos/AcbrCTeServico.cs:line 53
         at Dfe.Monitor.CapturaCte.Servicos.AcbrCTeServico..ctor(EmpresaParametrosCteSelecaoModel empresacte, CertificadoPorParametrosModel certificadodigitalkeevo) in /src/Servicos/AcbrCTeServico.cs:line 24
         at Dfe.Monitor.CapturaCte.Workers.CapturaCte.CapturaCteWorker.ProcessarEmpresa(EmpresaParametrosCteSelecaoModel empresacteselecaomodel, SemaphoreSlim semaphoreempresa) in /src/Workers/CapturaCte/CapturaCteWorker.cs:line 195
         
info: Dfe.Monitor.CapturaCte.Workers.CapturaCte.CapturaCteWorker[0]
      [MONITOR_CAPTURA_CTE][2024-08-28 11:02:30] Iniciando processamento da empresa [10194] - CNPJ: 41125573000129, Razão Social: ESCUTART APARELHOS AUDITIVOS LTDA
fail: Dfe.Monitor.CapturaCte.Workers.CapturaCte.CapturaCteWorker[0]
      [08/28/2024 11:02:30][MONITOR_CAPTURA_CTE][2024-08-28 11:02:30] Erro ao processar documento fiscal. Exceção: Sessão não [%s] existe no arquivo de configuração - Exceção interna:  - StackTrace:    at Keevo.Pacotes.Infra.ACBrLib.Core.ACBrLibHandle.CheckResult(Int32 ret)
         at Keevo.Pacotes.Infra.ACBrLib.CTe.ACBrCTe.ConfigGravarValor(ACBrSessao eSessao, String eChave, Object value)
         at Keevo.Pacotes.Infra.ACBrLib.Core.Config.ACBrLibConfigBase`1.SetProperty[TProp](TProp newValue, String propertyName)
         at Keevo.Pacotes.Infra.ACBrLib.Core.Config.DFeConfig`1.set_SSLCryptLib(SSLCryptLib value)
         at Dfe.Monitor.CapturaCte.Servicos.AcbrCTeServico.ConfigurarCertificado(ACBrCTe acbrCTe, CertificadoPorParametrosModel certificadodigitalkeevo) in /src/Servicos/AcbrCTeServico.cs:line 53
         at Dfe.Monitor.CapturaCte.Servicos.AcbrCTeServico..ctor(EmpresaParametrosCteSelecaoModel empresacte, CertificadoPorParametrosModel certificadodigitalkeevo) in /src/Servicos/AcbrCTeServico.cs:line 24
         at Dfe.Monitor.CapturaCte.Workers.CapturaCte.CapturaCteWorker.ProcessarEmpresa(EmpresaParametrosCteSelecaoModel empresacteselecaomodel, SemaphoreSlim semaphoreempresa) in /src/Workers/CapturaCte/CapturaCteWorker.cs:line 195
 

Ao inserir o log paranóico no fórum, ocorre o seguinte erro:

Houve um problema no processamento do arquivo enviado. -200

Desde já agradeço.

 

  • Consultores
Postado
13 minutes ago, TimeB256 said:

Prezados, bom dia !

Preciso de um apoio. Tenho um serviço que roda em um container docker, e ao verificar o log de execução, encontrei o seguinte problema:

Sessão não [%s] existe no arquivo de configuração

Segue detalhes do erro.

info: Dfe.Monitor.CapturaCte.Workers.CapturaCte.CapturaCteWorker[0]
      [MONITOR_CAPTURA_CTE][2024-08-28 11:02:33] Iniciando processamento da empresa [10194] - CNPJ: 53266121000146, Razão Social: AC TREINAMENTOS LTDA
fail: Dfe.Monitor.CapturaCte.Workers.CapturaCte.CapturaCteWorker[0]
      [08/28/2024 11:02:33][MONITOR_CAPTURA_CTE][2024-08-28 11:02:33] Erro ao processar documento fiscal. Exceção: Sessão não [%s] existe no arquivo de configuração - Exceção interna:  - StackTrace:    at Keevo.Pacotes.Infra.ACBrLib.Core.ACBrLibHandle.CheckResult(Int32 ret)
         at Keevo.Pacotes.Infra.ACBrLib.CTe.ACBrCTe.ConfigGravarValor(ACBrSessao eSessao, String eChave, Object value)
         at Keevo.Pacotes.Infra.ACBrLib.Core.Config.ACBrLibConfigBase`1.SetProperty[TProp](TProp newValue, String propertyName)
         at Keevo.Pacotes.Infra.ACBrLib.Core.Config.DFeConfig`1.set_SSLCryptLib(SSLCryptLib value)
         at Dfe.Monitor.CapturaCte.Servicos.AcbrCTeServico.ConfigurarCertificado(ACBrCTe acbrCTe, CertificadoPorParametrosModel certificadodigitalkeevo) in /src/Servicos/AcbrCTeServico.cs:line 53
         at Dfe.Monitor.CapturaCte.Servicos.AcbrCTeServico..ctor(EmpresaParametrosCteSelecaoModel empresacte, CertificadoPorParametrosModel certificadodigitalkeevo) in /src/Servicos/AcbrCTeServico.cs:line 24
         at Dfe.Monitor.CapturaCte.Workers.CapturaCte.CapturaCteWorker.ProcessarEmpresa(EmpresaParametrosCteSelecaoModel empresacteselecaomodel, SemaphoreSlim semaphoreempresa) in /src/Workers/CapturaCte/CapturaCteWorker.cs:line 195
         
info: Dfe.Monitor.CapturaCte.Workers.CapturaCte.CapturaCteWorker[0]
      [MONITOR_CAPTURA_CTE][2024-08-28 11:02:30] Iniciando processamento da empresa [10194] - CNPJ: 41125573000129, Razão Social: ESCUTART APARELHOS AUDITIVOS LTDA
fail: Dfe.Monitor.CapturaCte.Workers.CapturaCte.CapturaCteWorker[0]
      [08/28/2024 11:02:30][MONITOR_CAPTURA_CTE][2024-08-28 11:02:30] Erro ao processar documento fiscal. Exceção: Sessão não [%s] existe no arquivo de configuração - Exceção interna:  - StackTrace:    at Keevo.Pacotes.Infra.ACBrLib.Core.ACBrLibHandle.CheckResult(Int32 ret)
         at Keevo.Pacotes.Infra.ACBrLib.CTe.ACBrCTe.ConfigGravarValor(ACBrSessao eSessao, String eChave, Object value)
         at Keevo.Pacotes.Infra.ACBrLib.Core.Config.ACBrLibConfigBase`1.SetProperty[TProp](TProp newValue, String propertyName)
         at Keevo.Pacotes.Infra.ACBrLib.Core.Config.DFeConfig`1.set_SSLCryptLib(SSLCryptLib value)
         at Dfe.Monitor.CapturaCte.Servicos.AcbrCTeServico.ConfigurarCertificado(ACBrCTe acbrCTe, CertificadoPorParametrosModel certificadodigitalkeevo) in /src/Servicos/AcbrCTeServico.cs:line 53
         at Dfe.Monitor.CapturaCte.Servicos.AcbrCTeServico..ctor(EmpresaParametrosCteSelecaoModel empresacte, CertificadoPorParametrosModel certificadodigitalkeevo) in /src/Servicos/AcbrCTeServico.cs:line 24
         at Dfe.Monitor.CapturaCte.Workers.CapturaCte.CapturaCteWorker.ProcessarEmpresa(EmpresaParametrosCteSelecaoModel empresacteselecaomodel, SemaphoreSlim semaphoreempresa) in /src/Workers/CapturaCte/CapturaCteWorker.cs:line 195
 

Ao inserir o log paranóico no fórum, ocorre o seguinte erro:

Houve um problema no processamento do arquivo enviado. -200

Desde já agradeço.

 

Bom dia!
Por favor, envie o log paranoico para o e-mail [email protected] com o link do tópico do fórum no corpo do e-mail para posterior identificação.

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

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 !!

  • Consultores
Postado

Por favor esta com permissão de leitura e gravação a pasta onde esta o arquivo lib.ini?
esta aplicando aqui neste path, esta correto? /usr/share/dotnet/acbrlib.ini
quando inicializa a lib, vc esta passando o nome do ini ou esta deixando p ele criar um padrao?
se puder testar passando o ini na inicialização:
Exemplo:
Meu esta como NFe mas é apenas para contexto dos comandos. no seu caso vai usar o CTe.

NFE_Inicializar('/suaPasta/acbrlib.ini', '');


Gravando Valor no INI:

NFE_ConfigGravarValor('DFe', 'SSLCryptLib', '1');
NFE_ConfigGravarValor('DFe', 'SSLHttpLib', '3');
NFE_ConfigGravarValor('DFe', 'SSLXmlSignLib', '4');


Salvando o INI:
 

NFE_ConfigGravar('/suaPasta/acbrlib.ini');

Veja se assim o problema persiste por favor.
Aguardo um feedback

  • Curtir 1
Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

  • Membros Pro
Postado

Boa tarde, então, vou te passar minha classe de serviço, como está configurada.

Se puder me ajudar...

Enviei 2 trechos de código pra ver se me ajuda. O primeiro é minha classe de serviço de config do Acbr. O segundo, toda vez que eu processo uma empresa na captura de cte, eu instancio essa classe.

using Dfe.Pacotes.Infra.IntegracaoApi.Models.Passaporte;
using Keevo.Pacotes.Infra.ACBrLib.Core.DFe;
using Keevo.Pacotes.Infra.ACBrLib.CTe;
using Keevo.Pacotes.Infra.ACBrLib.CTe.Models;
using Keevo.Pacotes.Infra.Utils.Conversao;
using Keevo.Pacotes.Infra.Utils.Criptografia;
using Keevo.Pacotes.Infra.Utils.Diretorio;
using Keevocenter.Pacotes.Infra.IntegracaoApi.Models.Certificado;

namespace Dfe.Monitor.CapturaCte.Servicos
{
    public class AcbrCTeServico : IDisposable
    {
        public ACBrCTe acbrcte { get; set; }
        public EmpresaParametrosCteSelecaoModel empresacte { get; set; }
        public CertificadoPorParametrosModel certificadodigitalkeevo { get; set; }
        public AcbrCTeServico(EmpresaParametrosCteSelecaoModel empresacte, CertificadoPorParametrosModel certificadodigitalkeevo)
        {
            acbrcte = new();

            this.empresacte = empresacte;
            this.certificadodigitalkeevo = certificadodigitalkeevo;

            ConfigurarCertificado(acbrcte, certificadodigitalkeevo);
        }

        public DistribuicaoDFeResposta<TipoCTe> DistribuicaoDFe() => TratarDfeResposta(acbrcte.DistribuicaoDFe(empresacte.codigonfe.ToInt(),
                                                                                                     empresacte.cnpj,
                                                                                                     empresacte.ultimonsu ?? ("0").PadLeft(15, '0'), ""));
        public DistribuicaoDFeResposta<TipoCTe> DistribuicaoDFe(long ultimonsu) => DistribuicaoDFe(ultimonsu.ToString().PadLeft(15, '0'));
        public DistribuicaoDFeResposta<TipoCTe> DistribuicaoDFe(string ultimonsu) => TratarDfeResposta(acbrcte.DistribuicaoDFe(empresacte.codigonfe.ToInt(),
                                                                                                     empresacte.cnpj,
                                                                                                     ultimonsu, ""));

        public DistribuicaoDFeResposta<TipoCTe> DistribuicaoCtePorNSU(long nsu) => DistribuicaoCtePorNSU(nsu.ToString().PadLeft(15, '0'));
        public DistribuicaoDFeResposta<TipoCTe> DistribuicaoCtePorNSU(string nsu) => TratarDfeResposta(acbrcte.DistribuicaoDFePorNSU(empresacte.codigonfe.ToInt(),
                                                                                                     empresacte.cnpj,
                                                                                                     nsu));
        public DistribuicaoDFeResposta<TipoCTe> DistribuicaoCtePorChave(string chave)
            => DistribuicaoCtePorChave(empresacte, chave);
        public DistribuicaoDFeResposta<TipoCTe> DistribuicaoCtePorChave(EmpresaParametrosCteSelecaoModel empresacte, string chave)
            => TratarDfeResposta(acbrcte.DistribuicaoDFePorChave(empresacte.codigonfe.ToInt(), empresacte.cnpj, chave));

        public DistribuicaoDFeResposta<TipoCTe> TratarDfeResposta(string resposta) => DistribuicaoDFeResposta<TipoCTe>.LerResposta(resposta);

        public void ConfigurarCertificado()
        {
            ConfigurarCertificado(acbrcte, certificadodigitalkeevo);
        }

        public static void ConfigurarCertificado(ACBrCTe acbrCTe, CertificadoPorParametrosModel certificadodigitalkeevo)
        {
            acbrCTe.Config.DFe.SSLCryptLib = GetSSLCryptLib();
            acbrCTe.Config.DFe.SSLHttpLib = GetSSLHttpLib();
            acbrCTe.Config.DFe.SSLXmlSignLib = SSLXmlSignLib.xsLibXml2;
            acbrCTe.Config.DFe.DadosPFX = certificadodigitalkeevo.arquivocertificado;
            acbrCTe.Config.DFe.Senha = KeevoCrypto.Decrypt(certificadodigitalkeevo.senha);
            acbrCTe.Config.Ambiente = TipoAmbiente.taProducao;
            acbrCTe.Config.SalvarArq = false;
            acbrCTe.Config.SalvarGer = false;
            

            //Configurações para processamento
            acbrCTe.Config.SSLType = SSLType.LT_TLSv1_2;
            acbrCTe.Config.Timeout = 25000;
            acbrCTe.Config.AguardarConsultaRet = 0;
            acbrCTe.Config.Tentativas = 5;
            acbrCTe.Config.IntervaloTentativas = 1000;
            acbrCTe.Config.PathSchemas = KeevoDiretorio.AppPath() + @"/Schemas/CTe";

            //Configurações para logs
//#if (DEBUG)
            acbrCTe.Config.Principal.LogNivel = Keevo.Pacotes.Infra.ACBrLib.Core.NivelLog.logParanoico;
            acbrCTe.Config.Principal.LogPath = KeevoDiretorio.AppPath();
            acbrCTe.ConfigGravar();
//#endif

        }

        private static SSLCryptLib GetSSLCryptLib() => ACBrCTe.IsWindows ? SSLCryptLib.cryWinCrypt : SSLCryptLib.cryOpenSSL;
        private static SSLHttpLib GetSSLHttpLib() => ACBrCTe.IsWindows ? SSLHttpLib.httpWinHttp : SSLHttpLib.httpOpenSSL;
        public void Dispose()
        {
            acbrcte.Dispose();
        }
    }
}

Toda vez que eu processo uma empresa, eu instancio essa classe, conforme código abaixo:

 

public async Task ProcessarEmpresa(EmpresaParametrosCteSelecaoModel empresacteselecaomodel, SemaphoreSlim semaphoreempresa)
{
    AcbrCTeServico? acbrcteservico = null;

    try
    {
        if (empresacteselecaomodel.datahoraultimaconsulta.AddHours(1).AddMinutes(1) > DateTime.Now.ToSATimeZone())
        {
            _logger.LogInformation($"[MONITOR_CAPTURA_CTE][{DateTime.UtcNow:yyyy-MM-dd HH:mm:ss}] A empresa está em no tempo de 1 hora de espera");
            return;
        }

        CertificadoPorParametrosModel certificadodigitalkeevo = await _kcenterworkscertificadoservico.SelecionarPorParametros
        (
            empresacteselecaomodel.idempresaevocenter,
            empresacteselecaomodel.idmaster,
            AplicativoModel.en_aplicativo.Manifestacao.ToInt()
        );

        if (!ValidacaoCertificado(certificadodigitalkeevo, empresacteselecaomodel))
            return;
        else
        {
            _logger.LogInformation($"[MONITOR_CAPTURA_CTE][{DateTime.UtcNow:yyyy-MM-dd HH:mm:ss}] Iniciando processamento da empresa [{empresacteselecaomodel.idmaster}] - CNPJ: {empresacteselecaomodel.cnpj}, Razão Social: {empresacteselecaomodel.razaosocial}");
            acbrcteservico = new AcbrCTeServico(empresacteselecaomodel, certificadodigitalkeevo);
            long ultimoNSUretornado = 0;
            long maxNSUretornado = 0;
            do
            {
                long ultimoNsuConsulta = Convert.ToInt64(empresacteselecaomodel.ultimonsu);
                var resposta = acbrcteservico.DistribuicaoDFe();

                _logger.LogInformation($"[{DateTime.Now}][MONITOR_CAPTURA_CTE][{DateTime.UtcNow:yyyy-MM-dd HH:mm:ss}] Resultado da busca para empresa [{empresacteselecaomodel.cnpj}:{empresacteselecaomodel.razaosocial}] | CStat: {resposta.CStat} - XMotivo: {resposta.XMotivo}");

                if (resposta.CStat.Equals(DOCUMENTO_ENCONTRADO)) //DOCUMENDO ENCONTRADO 138
                    await ProcessarRespostaDistribuicaoDFe(resposta, empresacteselecaomodel);
                else if (resposta.CStat.Equals(CONSUMO_INDEVIDO) || resposta.CStat.Equals(CNPJ_DIGITAL)) //CONSUMO INDEVIDO = 656//CNPJ_DIGITAL = 593
                    return;

                ultimoNSUretornado = Convert.ToInt64(resposta.ultNSU);
                maxNSUretornado = Convert.ToInt64(resposta.maxNSU);

                _logger.LogInformation($"[MONITOR_CAPTURA_CTE][{DateTime.UtcNow:yyyy-MM-dd HH:mm:ss}] Salvando novas informacoes da empresa [{empresacteselecaomodel.idmaster}] - CNPJ: {empresacteselecaomodel.cnpj}, Razão Social: {empresacteselecaomodel.razaosocial} ------- UltimoNSUEmpresa: {empresacteselecaomodel.ultimonsu} - MaxNSUSefaz: {resposta.maxNSU}/ultimoNSUSefaz:{resposta.ultNSU}");
                await SalvarConfiguracaoParametrosEmpresaCte(empresacteselecaomodel, resposta.ultNSU);
                _logger.LogInformation($"[MONITOR_CAPTURA_CTE][{DateTime.UtcNow:yyyy-MM-dd HH:mm:ss}] INFORMAÇÕES SALVAS [{empresacteselecaomodel.idmaster}] - CNPJ: {empresacteselecaomodel.cnpj}, Razão Social: {empresacteselecaomodel.razaosocial}");

                if (ultimoNsuConsulta == maxNSUretornado)
                    break;
            } while (ultimoNSUretornado <= maxNSUretornado);
        }
    }
    catch (Exception ex)
    {
        LogarException(ex, "ProcessarEmpresa");
    }
    finally
    {
        //acbrcteservico?.Dispose();
        try
        {
            semaphoreempresa.Release();
        }
        catch (Exception e)
        {
            LogarException(e);
        }
    }
}
 

Se precisar de alguma outra informação, estou a disposição.

  • Consultores
  • Solution
Postado

Boa tarde!

Por favor, tente fazer o seguinte teste:

  1. Renomeie seu arquivo ACBrLib.ini.
  2. Execute sua aplicação para que a Lib crie um novo arquivo ACBrLib.ini em branco.
  3. Vá preenchendo as seções do novo arquivo até utilizando as informações do seu arquivo renomeado.
    Preenche uma seção, executa a aplicação, se não der erro, preenche uma nova seção e executa novamente.

Assim, é possível verificar se seu arquivo tem alguma configuração incorreta em alguma das seções que possa estar causando algum erro na leitura.

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

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 !!

×
×
  • 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.