Membros Pro TimeB256 Posted August 28 Membros Pro Share Posted August 28 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. Link to comment Share on other sites More sharing options...
Consultores Diego Foliene Posted August 28 Consultores Share Posted August 28 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. Diego FolieniAjude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (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 !! Link to comment Share on other sites More sharing options...
Membros Pro TimeB256 Posted August 28 Author Membros Pro Share Posted August 28 Enviado ! Link to comment Share on other sites More sharing options...
Consultores Daniel InfoCotidiano Posted August 28 Consultores Share Posted August 28 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 1 Daniel de Morais (Infocotidiano) Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Discord Link to comment Share on other sites More sharing options...
Membros Pro TimeB256 Posted August 29 Author Membros Pro Share Posted August 29 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. Link to comment Share on other sites More sharing options...
Consultores Diego Foliene Posted August 29 Consultores Share Posted August 29 Boa tarde! Por favor, tente fazer o seguinte teste: Renomeie seu arquivo ACBrLib.ini. Execute sua aplicação para que a Lib crie um novo arquivo ACBrLib.ini em branco. 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. Diego FolieniAjude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (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 !! Link to comment Share on other sites More sharing options...
Recommended Posts