C# System.Data.OracleClient不使用64位Oracle客户端

C# System.Data.OracleClient不使用64位Oracle客户端,c#,.net,oracle,oracle11g,oracle10g,C#,.net,Oracle,Oracle11g,Oracle10g,我设计了一个C应用程序来连接到Oracle数据库并更改模式用户密码。我的引用程序集是System.Data.OracleClient,位置为:C:\Program Files x86\reference Assemblys\Microsoft\Framework.NETFramework\v4.5\System.Data.OracleClient.dll 我用来设计/测试应用程序的平台如下所示: 1.64位Windows7平台。 2.32位.Net Frameworkv4.5 3.32位Orac

我设计了一个C应用程序来连接到Oracle数据库并更改模式用户密码。我的引用程序集是System.Data.OracleClient,位置为:C:\Program Files x86\reference Assemblys\Microsoft\Framework.NETFramework\v4.5\System.Data.OracleClient.dll

我用来设计/测试应用程序的平台如下所示: 1.64位Windows7平台。 2.32位.Net Frameworkv4.5 3.32位Oracle 10g客户端

我需要这个应用程序运行64位Oracle客户端太多。但当我将二进制文件传输到安装了64位Oracle11g的机器上时,会出现以下错误:尝试加载Oracle客户端库引发了BadImageFormatException。当以64位模式运行并安装了32位Oracle客户端组件时,会出现此问题

我不知道如何解决这个问题。请建议我是否需要进行任何代码更改或程序集引用。我浏览了很多类似的论坛,但没有找到任何有用的东西。请帮忙

首先,不推荐使用provider System.Data.OracleClient。微软不再支持它,您应该考虑使用Oracle提供程序Oracle .DATAccess或Oracle .MauldDATAccess。 我建议在您的开发机器上同时安装32位和64位Oracle客户端,然后您可以测试和构建任何东西。以下是如何执行此操作的说明:


x86 Oracle客户端可以连接到64位Oracle数据库,反之亦然也没有问题。

我在Windows 10 PC上也遇到了同样的问题。我将项目从旧计算机复制到新计算机,都是64位的,并且我在新计算机上安装了64位Oracle客户端。我收到了相同的错误消息,但在尝试了许多无效的解决方案后,对我来说真正有效的是:

在您的Visual Studio中,我的是2017 go to

工具>选项>项目和解决方案>Web项目

在该页面上,选中以下选项:将64位版本的IIS Express用于网站和项目

打开Oracle Net配置助手 在本地网络服务名称配置中选择单选按钮选项,然后单击下一步 在“重新配置”中选择单选按钮选项,然后单击“下一步” 选择要重新配置的网络服务名称,或者选择ORACLR\u连接\u数据,或者选择ORCL,然后单击下一步 输入您的服务名称,如果已安装oracle的服务名称为ORCL,则将ORCL写入该字段,然后单击“下一步” 选择要使用的协议,例如,选择TCP,然后单击下一步 输入oracle数据库引擎服务安装的主机名,例如,安装在台式机或笔记本电脑上, 然后填写为localhost,并填写您的端口号选择选项使用标准端口号1521,或者如果使用其他端口,请填写端口号 然后单击下一步。 选择是执行测试, 如有必要,请更改用户登录 然后单击下一步 如果“否”,请配置另一个网络服务名称,选择“否”,然后单击“下一步”
如果要从MS Visual Studio连接.net framework,则应下载、解压缩并安装ODTwithODAC183.zip和BuildTools_Full.exe。您需要64位库。请参阅:这是否允许我成功连接到32位Oracle DB?是的,它应该可以。因此,首先,我应该安装64位.Net framework以获得64位库?您需要上面链接中提到的64位ODP.Net库。devArt的dotConnect for Oracle也可以工作。它需要花钱,但它没有客户端依赖关系上次我使用Oracle的ODP.net时,如果客户端没有安装Oracle客户端,它就会呕吐,而且它还可以与实体框架一起工作。提供程序Oracle.ManagedDataAccess也不需要安装任何Oracle客户端。然而,它最近在12c中发布,仍然有一些bug。