Tempo estimado para leitura: 00:02:00
Dúvida
Quando ocorre erro nas autenticações de algumas APIs que utilizam .NET Core.
Ambiente
Varejo Supermercados - API - a partir do Oracle 19.24
Descrição do problema
Após a atualização do Oracle para a versão 19.24 ou superior, passou a ocorrer falha na conexão com o Devart DotConnect quando utilizado com direct=true. O problema está relacionado à configuração dos parâmetros de criptografia no arquivo sql.net do Oracle e afeta conexões diretas quando certos parâmetros estão definidos como REQUIRED.
Mensagem de erro exibida (verificar nos eventos do Windows)
Tnf.Drivers.Devart.DevartDotConnectException: Error trying open a connection using Devart DotConnect (Action: Validate License) ---> System.InvalidOperationException: Cannot obtain Oracle Client information from registry. Make sure that Oracle Client Software is installed and that the bitness of your application (x64) matches the bitness of your Oracle Client, or use the Direct mode of connecting to a server.
Erros visuais relacionados:
Acesso direto à API pelo navegador:
Inspeção da página na aba 'Console':
Abertura da aplicação:
Causa
O erro é provocado por uma incompatibilidade entre as versões recentes do Oracle (≥ 19.24) e versões anteriores do Devart DotConnect ao utilizar o modo Direct com determinados parâmetros de criptografia exigidos (SQLNET.ENCRYPTION_SERVER, SQLNET.CRYPTO_CHECKSUM_SERVER, SQLNET.ENCRYPTION_CLIENT, SQLNET.CRYPTO_CHECKSUM_CLIENT).
Soluções paliativas (temporárias)
-
Remover o parâmetro
direct=trueda string de conexão das APIs. (Não recomendado)- Observação: sem o modo Direct, a aplicação depende do Oracle Client instalado no servidor, que deve ser compatível com a arquitetura de 64 bits.
- Esta solução é temporária, pois futuras atualizações do ERP podem reintroduzir o parâmetro
direct=true.
-
Alterar os parâmetros no arquivo
sql.netdo Oracle.-
Solicite ao DBA do cliente que modifique os parâmetros de
REQUIREDparaACCEPTEDnos seguintes locais:GRID_HOME\network\adminORACLE_HOME\network\admin
Dentro destes diretórios, adicione ou altere os seguintes parâmetros (caso estejam definidos como
REQUIRED, substitua porACCEPTED), conforme o exemplo:SQLNET.ENCRYPTION_SERVER = ACCEPTEDSQLNET.CRYPTO_CHECKSUM_SERVER = ACCEPTEDSQLNET.ENCRYPTION_CLIENT = ACCEPTEDSQLNET.CRYPTO_CHECKSUM_CLIENT = ACCEPTED - Recomenda-se reiniciar o listener do Oracle após as alterações, pois as conexões poderão ser temporariamente interrompidas.
-
Referência:
Release Notes Devart DotConnect for Oracle – versão 10.3.104
Correção definitiva
O problema foi corrigido a partir da versão 10.3.104 do Devart.
A versão do framework TNF 8.1.1.18802 já inclui esta atualização.
➡️ Solução recomendada: Atualizar o framework TNF do projeto. Esta atualização atualizará automaticamente a versão do Devart, eliminando o erro.
Alguns projetos da versão 25.07 estão sendo atualizados, porém somente a partir da versão 26.01 todos os projetos estarão atualizados e livres deste erro.
0 Comentários