rael Postado 6 Dezembro, 2022 Postado 6 Dezembro, 2022 Bom dia, Estou tendo o seguinte problema ao utilizar o projero "Projetos\ACBrLib\Demos\C#\ACBr.API". Baixei o projeto do svn , segui os passos do vídeo https://www.youtube.com/watch?v=SuZ46PWW31U "Nova demonstração da ACBrLib utilizando API em C#". Baixei a "ACBrLibNFeDemo-0.4.6.199". Aqui vou focar na opção NFeController/GerarPdf que realmente é a que preciso. Quando chamado o método apenas uma vez ele funciona perfeito. Mas quando chamado várias vezes ao mesmo tempo, que seria para isso a função multithreading começamos a ter alguns erros: Access violation em ACBrLib.Core.ACBrLibHandle.CheckResult(Int32 ret) em C:\Projetos\ACBRDiretoSVNdeles\Projetos\ACBrLib\Demos\C#\Shared\ACBrLib.Core\ACBrLibHandle.cs:linha 277 em ACBrLib.NFe.ACBrNFe.FinalizeLib() em C:\Projetos\ACBRDiretoSVNdeles\Projetos\ACBrLib\Demos\C#\NFe\Imports\Dinamico\MT\ACBrNFe.cs:linha 616 em ACBrLib.Core.ACBrLibHandle.ReleaseHandle() em C:\Projetos\ACBRDiretoSVNdeles\Projetos\ACBrLib\Demos\C#\Shared\ACBrLib.Core\ACBrLibHandle.cs:linha 127 em System.Runtime.InteropServices.SafeHandle.InternalRelease(Boolean disposeOrFinalizeOperation) em System.Runtime.InteropServices.SafeHandle.Dispose() em Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.DisposeAsync() Outras vezes : rlVenda (Division by Zero) No vídeo não vi o teste do postman sendo feito com várias requisições ao mesmo tempo.Acredito que tenham feito com certeza. Alguém com alguma dica do que pode ser. OBS: Temos a versão compilada no Lazarus.Mas como estava com o mesmo problema, resolvi ver se com Demo seria diferente.
Administradores Juliana Tamizou Postado 7 Dezembro, 2022 Administradores Postado 7 Dezembro, 2022 Boa tarde, Queira por favor anexar o log da lib.. Sugiro também verificar este tópico de nossa Base de Conhecimento At. Juliana Tamizou Gerente de Projetos ACBr / Diretora de Marketing AFRAC Ajude o Projeto ACBr crescer - Seja Pro (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 !!
rael Postado 9 Dezembro, 2022 Autor Postado 9 Dezembro, 2022 Bom dia, Obrigado pela atenção. 1º) Referente ao tópico que você me sugeriu, é por esse tópico e pelo vídeo https://www.youtube.com/watch?v=SuZ46PWW31U "Nova demonstração da ACBrLib utilizando API em C#" que já estou me orientando: 2º) Referente ao log, estou conseguindo gerar apenas o logSimples os outros tipos de logs não estão gerando. Estou utilizando o código de vocês do exemplo "ACBrLib\Demos\C#\ACBr.API\ACBr.API" com "Memory" e não .ini. Como no exemplo de vocês não tinha o caminho do log adicionei no código. Coloquei o logSimples em anexo, mas acredito que não vai ajudar muito para descobrir o problema de "Access violation" .Se tiver uma dica de como gerar os outros logs nesse exemplo de vcs de API C# com multithread, agradeço muito. Como está atualmente meu código no Exemplo de vocês da API C#: public async Task<IActionResult> GerarPdf([FromServices] ACBrNFe nfe, IFormFile xmlNFe) { if (!xmlNFe.FileName.EndsWith(".xml")) return BadRequest(); using var stream = new StreamReader(xmlNFe.OpenReadStream()); nfe.CarregarXML(await stream.ReadToEndAsync()); var codigo = Guid.NewGuid(); var path = Path.GetTempPath(); var nomeArquivo = $@"{codigo}.pdf"; nfe.Config.Principal.TipoResposta = ACBrLib.Core.TipoResposta.fmtJSON; nfe.Config.Principal.CodificacaoResposta = ACBrLib.Core.CodResposta.UTF8; nfe.Config.Principal.LogNivel = ACBrLib.Core.NivelLog.logSimples; nfe.Config.Principal.LogPath = "C:\\Dados\\AcbrApi\\"; nfe.Config.DANFe.MostraSetup = false; nfe.Config.DANFe.MostraPreview = false; nfe.Config.DANFe.MostraStatus = false; nfe.Config.DANFe.PathPDF = path; nfe.Config.DANFe.NomeDocumento = nomeArquivo; nfe.ImprimirPDF(); var fs = new FileStream(Path.Combine(path, nomeArquivo), FileMode.Open); ACBrLibNFE-20221209.log
Consultores antonio.carlos Postado 15 Dezembro, 2022 Consultores Postado 15 Dezembro, 2022 Em 09/12/2022 at 08:08, rael disse: Bom dia, Obrigado pela atenção. 1º) Referente ao tópico que você me sugeriu, é por esse tópico e pelo vídeo https://www.youtube.com/watch?v=SuZ46PWW31U "Nova demonstração da ACBrLib utilizando API em C#" que já estou me orientando: 2º) Referente ao log, estou conseguindo gerar apenas o logSimples os outros tipos de logs não estão gerando. Estou utilizando o código de vocês do exemplo "ACBrLib\Demos\C#\ACBr.API\ACBr.API" com "Memory" e não .ini. Como no exemplo de vocês não tinha o caminho do log adicionei no código. Coloquei o logSimples em anexo, mas acredito que não vai ajudar muito para descobrir o problema de "Access violation" .Se tiver uma dica de como gerar os outros logs nesse exemplo de vcs de API C# com multithread, agradeço muito. Como está atualmente meu código no Exemplo de vocês da API C#: public async Task<IActionResult> GerarPdf([FromServices] ACBrNFe nfe, IFormFile xmlNFe) { if (!xmlNFe.FileName.EndsWith(".xml")) return BadRequest(); using var stream = new StreamReader(xmlNFe.OpenReadStream()); nfe.CarregarXML(await stream.ReadToEndAsync()); var codigo = Guid.NewGuid(); var path = Path.GetTempPath(); var nomeArquivo = $@"{codigo}.pdf"; nfe.Config.Principal.TipoResposta = ACBrLib.Core.TipoResposta.fmtJSON; nfe.Config.Principal.CodificacaoResposta = ACBrLib.Core.CodResposta.UTF8; nfe.Config.Principal.LogNivel = ACBrLib.Core.NivelLog.logSimples; nfe.Config.Principal.LogPath = "C:\\Dados\\AcbrApi\\"; nfe.Config.DANFe.MostraSetup = false; nfe.Config.DANFe.MostraPreview = false; nfe.Config.DANFe.MostraStatus = false; nfe.Config.DANFe.PathPDF = path; nfe.Config.DANFe.NomeDocumento = nomeArquivo; nfe.ImprimirPDF(); var fs = new FileStream(Path.Combine(path, nomeArquivo), FileMode.Open); ACBrLibNFE-20221209.log 39 B · 4 downloads Log praticamente nenhuma informação.. se você esta utilizando via memory, você precisa utilizar os métodos de ConfigGravarValor e ConfigGravar.. para ler informações em memory, utilize métodos ConfigLerValor e ConfigLer. https://acbr.sourceforge.io/ACBrLib/ConfiguracoesdaBiblioteca16.html tenha certeza de que esta utilizando versão multithread da acbrlib.. e access violation geralmente acontece quando você esta tentando acessar algo na memoria que não existe ou já foi destruída.
rael Postado 13 Janeiro, 2023 Autor Postado 13 Janeiro, 2023 (editado) Estou conseguindo gerar apenas o Log simples, que não serve nesse caso para nada. Ainda não consegui fazer gerar os logNormal, logCompleto, logParanoico. Sem esse log não consigo prosseguir com erro que realmente , gostaria de ajuda.kkk Estou usando o exemplo de C# Api de vcs do SVN configurado em "Memory".Mudei o código como exemplo abaixo, para que fosse salvo o log completo ou Paranoico mas não resolveu: var codigo = Guid.NewGuid(); var path = "C:\\FolderHANDpaper\\NFe\\"; var nomeArquivo = $@"{codigo}.pdf"; nfe.ConfigGravarValor(ACBrLib.Core.ACBrSessao.Principal, "LogNivel", 4); nfe.ConfigGravarValor(ACBrLib.Core.ACBrSessao.Principal, "LogPath", path); nfe.ConfigGravarValor(ACBrLib.Core.ACBrSessao.DANFE, "MostraSetup", false); nfe.ConfigGravarValor(ACBrLib.Core.ACBrSessao.DANFE, "MostraPreview", false); nfe.ConfigGravarValor(ACBrLib.Core.ACBrSessao.DANFE, "MostraStatus", false); nfe.ConfigGravarValor(ACBrLib.Core.ACBrSessao.DANFE, "PathPDF", path); nfe.ConfigGravarValor(ACBrLib.Core.ACBrSessao.DANFE, "NomeDocumento", nomeArquivo); nfe.ConfigGravarValor(ACBrLib.Core.ACBrSessao.DANFE, "MargemDireita", 1); nfe.ConfigGravarValor(ACBrLib.Core.ACBrSessao.Principal, "TipoResposta", ACBrLib.Core.TipoResposta.fmtINI); nfe.ConfigGravarValor(ACBrLib.Core.ACBrSessao.Principal, "CodificacaoResposta", ACBrLib.Core.CodResposta.UTF8); nfe.Config.PathSchemas = "C:\\FolderHANDpaper\\NFe"; nfe.ConfigGravar($"C:\\FolderHANDpaper\\NFe\\{codigo}.ini"); nfe.ConfigLer($"C:\\FolderHANDpaper\\NFe\\{codigo}.ini"); nfe.CarregarXML(await stream.ReadToEndAsync()); nfe.ImprimirPDF(); Editado 13 Janeiro, 2023 por rael
rael Postado 13 Janeiro, 2023 Autor Postado 13 Janeiro, 2023 Boa tarde, peço desculpas pelo tópico aberto acima, peço para desconsiderar, mas acabei achando o log na pasta raiz do ISS. E nele possui o erro de quanto tento gerar ao mesmo tempo mais de um pdf, com a dll multithreading. "System.ApplicationException: Division by zero" ACBrLibNFE-20230113.log
Consultores antonio.carlos Postado 13 Janeiro, 2023 Consultores Postado 13 Janeiro, 2023 2 minutos atrás, rael disse: "System.ApplicationException: Division by zero" @rael legal, vamos lá ! o -10 quer dizer que houve erro ao tentar gerar o PDF, fazendo algumas pesquisar sobre o Exception, o mesmo quer dizer que: "System.ApplicationException: Division by zero" é uma mensagem de erro que indica que você está tentando dividir um número por zero, esse erro geralmente ocorre quando o código tenta dividir um número por uma variável que possui o valor de zero. Para correção, veja no código que a variável usada como divisor não possui o valor de zero.
rael Postado 16 Janeiro, 2023 Autor Postado 16 Janeiro, 2023 Obrigado pela rápida atenção! Sim entendi essa parte de ser um valor divido por zero. Mas gostaria que você atentasse para as seguintes informações: Estou usando a API de exemplo de vcs, essa mesma do vídeo do tutorial "Nova demonstração da ACBrLib utilizando API em C#", Se eu fizer várias chamadas só que não ao mesmo tempo,uma em sequência da outra, ela gera todos os PDFs sem problemas.Só quando faço duas chamadas ao mesmo tempo é que tenho esse problema. Então acredito que não seja nenhum valor de preenchimento , mas sim por está tentando gerar dois PDFs ao mesmo tempo, por algum motivo quando é ao mesmo tempo está dando esse erro. Estou usando o Postman acessando a Api de exemplos de vcs.
rael Postado 19 Janeiro, 2023 Autor Postado 19 Janeiro, 2023 Em 16/01/2023 at 08:21, rael disse: Obrigado pela rápida atenção! Sim entendi essa parte de ser um valor divido por zero. Mas gostaria que você atentasse para as seguintes informações: Estou usando a API de exemplo de vcs, essa mesma do vídeo do tutorial "Nova demonstração da ACBrLib utilizando API em C#", Se eu fizer várias chamadas só que não ao mesmo tempo,uma em sequência da outra, ela gera todos os PDFs sem problemas.Só quando faço duas chamadas ao mesmo tempo é que tenho esse problema. Então acredito que não seja nenhum valor de preenchimento , mas sim por está tentando gerar dois PDFs ao mesmo tempo, por algum motivo quando é ao mesmo tempo está dando esse erro. Estou usando o Postman acessando a Api de exemplos de vcs. Só para deixar claro , Estou usando o Demo "ACBrLib\Demos\C#\ACBr.API\ACBr.API" , pois como vocês já deixaram claro em vários tópicos é mais fácil de vocês ajudarem. Peguei uma máquina zerada para não ter referências de outras libs, dicas de vocÊs mesmo. Eu consigo gerar os pdf's normalmente, só quando é ao mesmo tempo , que esses erros começam a acontecer na realidade. O erro vai mudando de acordo com o momento que o acesso é feito ao mesmo tempo: , ("System.ApplicationException: Division by zero" outras vezes "Accesses Violation")
Consultores antonio.carlos Postado 26 Janeiro, 2023 Consultores Postado 26 Janeiro, 2023 conforme conversamos pelo Discord, foi criada uma task para analise do caso - #TK-271.
Consultores antonio.carlos Postado 30 Janeiro, 2023 Consultores Postado 30 Janeiro, 2023 Realizamos um commit, possível correção - Rev 28333
Membros Pro EDM Softwares Postado 31 Janeiro, 2023 Membros Pro Postado 31 Janeiro, 2023 Em 26/01/2023 at 14:26, antonio.carlos disse: #TK-271. Bom dia, vou iniciar os testes. 2
Membros Pro EDM Softwares Postado 31 Janeiro, 2023 Membros Pro Postado 31 Janeiro, 2023 19 horas atrás, antonio.carlos disse: Realizamos um commit, possível correção - Rev 28333 Com a ACBrLibNFe versão 0.4.6.222 disponibilizada no Fórum.Os erros continuam.Mesmo problema. 1
Consultores antonio.carlos Postado 31 Janeiro, 2023 Consultores Postado 31 Janeiro, 2023 8 minutos atrás, EDM Softwares disse: Com a ACBrLibNFe versão 0.4.6.222 disponibilizada no Fórum.Os erros continuam.Mesmo problema. verificando, logo daremos um retorno.
Consultores antonio.carlos Postado 22 Fevereiro, 2023 Consultores Postado 22 Fevereiro, 2023 @EDM Softwares tudo bem ? Em conversa com o time ACBr entramos em um consenso quanto a definição da próxima etapa da análise da situação encontrada por você. O que acontece é que o programa exemplo "ACBr.API" atual é um exemplo muito simples. Ele não está fazendo o controle de ponteiros para uso do ACBrLib em Multithread. É preciso ajustá-lo para refletir a forma correta de se implementar a comunicação em Multithread. Isso está na tarefa (#TK-271). Ela está em nosso backlog com alta prioridade, e será analisada assim que outras demandas com maior prioridade forem finalizadas. No entanto isso não impede de você fazer a implementação correta e utilizar a ACBrLib em Multithread. A cada thread que você chamar, basta criar um ponteiro utilizando o método Lib_Inicializar. Daí use esse ponteiro como parâmetro nas chamadas dessa thread para a lib. Assim que ajustarmos o exemplo retornaremos no tópico. Mas você pode criar novos tópicos para tirar dúvidas específicas sobre a implementação caso precise. 3
Membros Pro EDM Softwares Postado 24 Fevereiro, 2023 Membros Pro Postado 24 Fevereiro, 2023 No aguardo pela melhoria do ACBr.API. #TK-271. Desde já agradeço a atenção. 1
Membros Pro izzyway Postado 16 Março, 2023 Membros Pro Postado 16 Março, 2023 Boa tarde. Já conseguiram implementar a tarefa #TK-271. Estou com dificuldade nesse sentido da ACBrLib em Multithread.
Membros Pro izzyway Postado 16 Março, 2023 Membros Pro Postado 16 Março, 2023 (editado) Estamos finalizando a implementação de uma API para emissão de NFe, no caso será utilizada por vários clientes, vi no exemplo q fizeram da API não controla as requisições em cada thread, e que vcs iram fazer um novo exemplo utilizando ponteiro. Queria saber se vcs já tem um exemplo, pq fiz a implementação em cima do exemplo atual disponibilizado. Editado 16 Março, 2023 por izzyway Errei o texto
Moderadores Juliomar Marchetti Postado 16 Março, 2023 Moderadores Postado 16 Março, 2023 20 minutos atrás, izzyway disse: Estamos finalizando a implementação de uma API para emissão de NFe, no caso será utilizada por vários clientes, vi no exemplo q fizeram da API não controla as requisições em cada thread, e que vcs iram fazer um novo exemplo utilizando ponteiro. Queria saber se vcs já tem um exemplo, pq fiz a implementação em cima do exemplo atual disponibilizado. basta criar uma fila no receber os comandos e mandar uma a uma que vai funcionar com a multithread Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
Consultores Diego Foliene Postado 8 Maio, 2023 Consultores Postado 8 Maio, 2023 Boa tarde! Conforme informado mais acima, a sua demanda estava em nosso backlog, no entanto, a equipe precisou focar seus esforços em demandas de maior prioridade. Vamos verificar a possibilidade de encaixar essa demanda em sprints futuras. Durante esse período, como uma paliativo, peço que reveja a orientação que foi dada pelo @antonio.carlos sobre como proceder para usar em MT: Citar No entanto isso não impede de você fazer a implementação correta e utilizar a ACBrLib em Multithread. A cada thread que você chamar, basta criar um ponteiro utilizando o método Lib_Inicializar. Daí use esse ponteiro como parâmetro nas chamadas dessa thread para a lib. Mas você pode criar novos tópicos para tirar dúvidas específicas sobre a implementação caso precise. 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 !!
Dionis Mendanha Postado 18 Maio, 2023 Postado 18 Maio, 2023 Boa tarde alguma novidade com relação ao erro mencionado no topico?
Moderadores Juliomar Marchetti Postado 18 Maio, 2023 Moderadores Postado 18 Maio, 2023 1 hora atrás, Dionis Mendanha disse: Boa tarde alguma novidade com relação ao erro mencionado no topico? não mas tem a sugestão acima do Antonio basta seguir que resolve até que seja revisto Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
Dionis Mendanha Postado 18 Maio, 2023 Postado 18 Maio, 2023 eu fiz um teste conforme a imagem e mesmo assim quando uso o jmeter para fazer varias reqs ao mesmo tempo ele retorna os erros da outra foto
IOB Tecnologia Postado 6 Setembro, 2023 Postado 6 Setembro, 2023 Boa tarde, alguma noticia sobre a tarefa #TK-271? Estamos enfrentando o mesmo problema de access violation e division by zero
Consultores Alexandre de Paula Postado 6 Setembro, 2023 Consultores Postado 6 Setembro, 2023 Boa tarde. A TK está em nosso backlog, no entanto, não houve possibilidade avanço da mesma devido a outras demandas. Continuamos dependendo da disponibilidade dos consultores para implementação. Assim que tivermos um posicionamento será informado aqui no forum. Alexandre de Paula Ajude 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
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