Asp.net 错误ORA-12571(TNS:数据包编写器故障)在Web服务中意味着什么?

Asp.net 错误ORA-12571(TNS:数据包编写器故障)在Web服务中意味着什么?,asp.net,oracle,web-services,ora-12571,Asp.net,Oracle,Web Services,Ora 12571,Background:我正在调用一个用ASP.NET编写的Web服务来查询Oracle数据库。我知道Web服务本身是有效的,因为我在使用其他应用程序之前就使用过它。因此,我在VisualStudio中有一个web应用程序,我一直在来回切换,以从“开发”web服务指向同一web服务的生产配置版本进行测试。指向“DEV”配置的web服务没有问题,但是调用生产版本时,我总是会遇到调用该服务的异常: SoapException was unhandled by user code Server was

Background:我正在调用一个用ASP.NET编写的Web服务来查询Oracle数据库。我知道Web服务本身是有效的,因为我在使用其他应用程序之前就使用过它。因此,我在VisualStudio中有一个web应用程序,我一直在来回切换,以从“开发”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方式),但两者都给出了相同的错误


问题:那么,在Web服务上下文中,“ORA-12571:TNS:packet writer failure”错误意味着什么?查找Oracle错误号会给出一些非常模糊的可能原因,如“电缆连接松动”或“IP地址冲突”。我相当肯定这两者都不是,因为目前有一个不同的应用程序正在成功地使用该Web服务。可能是某种配置错误,或者更微妙的事情?还有人看到这个令人恼火的Oracle错误号被归因于与web服务相关的东西吗?

我建议更仔细地重新检查您的假设,因为这显然是与db的web服务对话中的错误,应该完全独立于w/s调用方

如果w/s调用正在生成这个特定的异常,那么它应该为所有其他调用生成该异常,因此成功使用web服务的“其他应用程序”只是没有执行相同的代码,或者存在外部因素


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

您的调用是从ws-client到ws-server再到oracle数据库

您的错误是由数据库生成的ORA错误。因此,您的问题可能在ws-server和数据库之间

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

编辑


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

可能有用的链接:是的,这是我找到的第一个链接,这就是我从中得到的“松散电缆连接”和“IP地址冲突”兔子线索答案。啊哈,你说得非常正确!我认为我的客户机没有正确地配置web服务,但真正的问题是web服务本身没有正确地与Oracle通信。这与实际解决方案最为接近,并使我想到了正确的途径。真正的问题是,我们生产服务器上的Oracle驱动程序只是一个Oracle 8.x驱动程序,但Web服务尝试与之通信的数据库是一个Oracle 9.2数据库。显然,驱动程序与数据库版本不匹配可能导致ORA-12571错误。如果您想编辑您的答案,将驱动程序版本不匹配作为可能的原因,这可能有助于未来的人员搜索类似的解决方案。:-)一些额外的信息,以防其他人偶然发现这个问题。上述修复(将Oracle驱动程序更新为9.2)对我们的“测试”服务器有所帮助,但没有修复生产服务器。我们使用NHibernate作为我们的ORM解决方案,最终发现测试服务器和生产服务器有不同版本的.NET(.NET 3.5 SP1与.NET 3.5 w/no SP)。我们用.NET3.5SP1更新了prod服务器,瞧,问题也在那里解决了。长话短说:(使用NHibernate的Web服务),我们必须将Oracle更新为9.2,将.NET更新为3.5SP1。