1

背景:我正在调用用 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 服务相关的东西吗?

4

2 回答 2

1

我建议更仔细地重新检查您的假设,因为这显然是与数据库的 Web 服务对话中的错误,并且应该完全独立于 w/s 调用者。

如果 w/s 调用正在生成此特定异常,则它应该对所有其他调用都这样做,因此成功使用 Web 服务的“其他应用程序”根本没有执行相同的代码,或者有外部因素在起作用。

无论哪种方式,它都与服务的注册或调用方式无关。

于 2009-10-17T18:20:10.010 回答
1

您的呼叫是从 ws 客户端到 ws 服务器再到 oracle 数据库。

您的错误是由数据库生成的 ORA 错误。所以你的问题可能出在ws服务器和数据库之间。

当您运行“针对适当数据库的 SQL 查询”时,您是从 Web 服务器执行的吗?如果没有,你可以试试。确保您使用相同的连接配置。

编辑

根据下面的评论,真正的问题是驱动程序不匹配。

于 2009-10-17T18:31:42.947 回答