System.data.OracleClient具有32位oracle客户端驱动程序,位于Seven 64位操作系统上

时间:2011-12-08 15:59:42

标签: .net windows system.data.oracleclient

我有一个Web应用程序从asp.net 1.1(VS 2003)迁移到Asp.net 2(VS 2008)。 我在新版本上执行Oracle连接时遇到问题。开发环境是64位七。当使用所有CPU生成应用程序时,我在System.Data.OracleClient上遇到问题,异常System.BadImageFormatException:暂定de chargement d'un program de format不正确。 (例外de HRESULT:0x8007000B)。 。我在x86 CPU上生成,我在启动时出现此错误:

  

[BadImageFormatException:不可能充电器le fichier ou   l'assembly'CpimWebApplication'ou une desesdépendances。试验   de chargement d'un program de format wrong。]
  System.Reflection.Assembly._nLoad(AssemblyName fileName,String   codeBase,Evidence assemblySecurity,Assembly locationHint,   StackCrawlMark&安培; stackMark,Boolean throwOnFileNotFound,Boolean   forIntrospection)+0
  System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef,   证据集合安全,StackCrawlMark& stackMark,布尔   forIntrospection)+416
  System.Reflection.Assembly.InternalLoad(String assemblyString,   证据集合安全,StackCrawlMark& stackMark,布尔   forIntrospection)+166 System.Reflection.Assembly.Load(String   assemblyString)+35
  System.Web.Configuration.CompilationSection.LoadAssemblyHelper(字符串   assemblyName,布尔starDirective)+190

问题是什么?机器上的Oracle客户端是32位版本。 我在网上看到,不可能使用32位oracle客户端的System.data.OracleClient?安装64位Oracle客户端是解决方案吗? TIA 问候

2 个答案:

答案 0 :(得分:2)

如果以64位模式运行应用程序,则无法使用32位Oracle驱动程序。

您需要安装64位Oracle驱动程序并以64位模式运行应用程序,

将应用程序设置为以32位模式运行。您可以通过选择应用程序池在IIS中执行此操作,转到“高级”设置并将“启用32位应用程序”设置为true。

答案 1 :(得分:0)

GTG是对的。

但是,不推荐使用System.Data.OracleClient。微软不再支持它了。

因此,我建议您使用.Net的Oracle数据提供程序:ODP.Net。

您可以从以下网址下载:

Oracle Database 11g Release 2 Client (11.2.0.1.0) for Microsoft Windows (32-bit) Oracle Database 11g Release 2 Client (11.2.0.1.0) for Microsoft Windows (x64)

对于开发(Win7 64位),请使用32位风格。我尝试过64位Oracle客户端但没有成功。 对于生产(Wind2008R2 64位),使用64位风味。 请注意,它们必须是相同的版本(11.2.1.0)。

另外,请确保为“Any CPU”编译应用程序,添加对Oracle.DataAccess的引用,将“Specific version”设置为“True”,将“Local copy”设置为“False”。通过这样做,当您将应用程序部署到生产环境时,它将从GAC中查找相同的版本(11.2.1.0,64位等效版本)。