背景:我正在调用用 ASP.NET 编写的 Web 服务来查询 Oracle 数据库。我知道 Web 服务本身可以工作,因为我在其他应用程序之前使用过它。因此,我在 Visual Studio 中有一个 Web 应用程序,我一直在来回切换以从“DEV”Web 服务指向同一 Web 服务的生产配置版本进行测试。指向“DEV”配置的 Web 服务是没有问题的,但是调用生产版本我总是得到一个调用服务的异常:
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
我对适当的数据库运行 SQL 查询(直接从异常消息中剪切和粘贴),查询返回了预期的数据。我尝试将 Web 服务引用更新并重新添加为“服务引用”(.NET 3.0+ 方式)和“Web 引用”(旧的 .NET 方式),并且都给出了相同的错误。
问:那么,“ORA-12571: TNS:packet writer failure”错误在 Web 服务的上下文中意味着什么?查找 Oracle 错误编号会给出一些非常模糊的可能原因,例如“电缆连接松动”或“IP 地址冲突”。我相当肯定这两者都不是,因为不同的应用程序当前正在成功使用该 Web 服务。可能是某种配置错误,或者更微妙的东西?还有其他人看到这个令人烦恼的 Oracle 错误号归因于与 Web 服务相关的东西吗?