Pergunta

Fundo: Estou chamando um serviço da web escrito no ASP.NET que consulta um banco de dados Oracle. Sei que o próprio serviço da web funciona, porque eu o usei antes de outros aplicativos. Então, eu tenho um aplicativo da Web no Visual Studio que tenho mudado para apontar de um serviço 'Dev' para uma versão configurada de produção do mesmo serviço da web para teste. Apontar para o serviço da web configurado 'Dev' não é problema, mas chamando a versão de produção, sempre recebo uma exceção chamando o serviço:

SoapException was unhandled by user code
Server was unable to process request. ---> could not execute query
[ SELECT this_.FIELD1 as FIELD1_18_0_, this_.FIELD2 as FIELD12_18_0_ FROM ABC.TABLE_A this_ WHERE this_.FIELD1 like :p0 ORDER BY this_.FIELD1 asc ]
Positional parameters:  #0>00073%
[SQL: SELECT this_.FIELD1 as FIELD1_18_0_, this_.FIELD2 as FIELD12_18_0_ FROM ABC.TABLE_A this_ WHERE this_.FIELD1 like :p0 ORDER BY this_.FIELD1] ---> ORA-12571: TNS:packet writer failure

Executei as consultas SQL em relação ao banco de dados apropriado (corte e colado diretamente da mensagem de exceção) e a consulta voltou com os dados esperados. Tentei atualizar e adicionar novamente a referência de serviço da Web como uma "referência de serviço" (.NET 3.0+ Way) e como uma "referência da Web" (mais antiga .NET Way), e ambos dão o mesmo erro.

Pergunta: Então, o que significa um erro "ORA-12571: TNS: Falha no redator de pacotes" no contexto de um serviço da web? Aumentar o número de erro do Oracle fornece algumas causas possíveis muito vagas, como "conexão solta do cabo" ou "conflito de endereço IP". Estou bastante certo de que não é nada disso, já que um aplicativo diferente está atualmente usando esse serviço da Web. Possivelmente algum tipo de erro de configuração, ou talvez algo mais sutil? Alguém mais viu esse número de erro do Oracle irritante sendo atribuído a algo relacionado ao serviço na Web?

Foi útil?

Solução

Sua chamada está indo do cliente WS para o servidor WS para o banco de dados Oracle.

Seu erro é um erro ORA, que é gerado pelo banco de dados. Portanto, seu problema provavelmente está entre o servidor WS e o banco de dados.

Quando você executou "as consultas SQL contra o banco de dados apropriado", você fez isso no servidor da Web? Caso contrário, você poderia tentar isso. Verifique se você está usando a mesma configuração de conexão.

EDITAR

De acordo com o comentário abaixo, o verdadeiro problema foi uma incompatibilidade de motorista.

Outras dicas

Sugiro reexaminar suas suposições com mais cuidado, pois isso é claramente um erro no diálogo de serviço da Web com o banco de dados e deve ser completamente independente do chamador W/S.

Se a chamada W/S estiver gerando essa exceção específica, deve fazer isso para todas as outras invocações; portanto, seu 'outro aplicativo' que está usando o serviço da Web com sucesso simplesmente não é executar o mesmo código ou há fatores externos em jogo.

De qualquer forma, não está relacionado à forma como o serviço é registrado ou invocado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top