后台:我正在调用用ASP.NET编写的查询Oracle数据库的Web服务。我知道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:数据包写入程序失败”错误在Web服务的上下文中意味着什么?查找Oracle错误编号会给出一些非常模糊的可能原因,例如“松散的电缆连接”或“IP地址冲突”。我很确定它们都不是这些,因为另一个应用程序目前正在成功使用该Web服务。可能是某种配置错误,或者更微妙的东西?其他人看到这个令人烦恼的Oracle错误号被归因于与Web服务相关的东西吗?
答案 0 :(得分:1)
我建议更仔细地重新审视您的假设,因为这显然是与数据库的Web服务对话中的错误,并且应该完全独立于w / s调用者。
如果w / s调用正在生成此特定异常,则它应该对所有其他调用执行此操作,因此成功使用Web服务的“其他应用程序”根本不执行相同的代码,或者存在外部因素播放。
无论哪种方式,它与服务的注册或调用方式无关。
答案 1 :(得分:1)
你的电话是从ws客户端到ws服务器再到oracle数据库。
您的错误是ORA错误,由数据库生成。所以你的问题可能在ws服务器和数据库之间。
当您针对相应的数据库运行“SQL查询”时,您是否从Web服务器执行此操作?如果没有,你能尝试吗?确保使用相同的连接配置。
修改强>
根据下面的评论,真正的问题是司机不匹配。