2011-12-08 70 views
1

我有一个从asp.net 1.1(VS 2003)迁移到Asp.net 2(VS 2008)的Web应用程序。 我在新版本上执行Oracle连接时遇到问题。开发环境是64位七。当使用所有的CPU生成应用程序时,System.Data.OracleClient中有一个问题,System.BadImageFormatException异常:暂定格式不正确。 (Exception de HRESULT:0x8007000B)。 。我生成x86 CPU上,我有在启动此错误:System.data.OracleClient使用32位位于七位64位的oracle客户端驱动程序操作系统

[BadImageFormatException:不可能去充电器乐fichier欧 L'集“CpimWebApplication瓯UNE德SESdépendances。暂定 德chargement科特迪瓦联合国计划德格式不正确。]
System.Reflection.Assembly._nLoad(的AssemblyName文件名,字符串 的代码库,证据assemblySecurity,大会locationHint, StackCrawlMark & stackMark,布尔throwOnFileNotFound,布尔 forIntrospection)+0
System.Reflection.Assembly.InternalLoad(的AssemblyName assemblyRef, 证据assemblySecurity,StackCrawlMark & stackMark,布尔 forIntrospection)416
System.Reflection.Assembly.InternalLoad(字符串assemblyString, 证据assemblySecurity,StackCrawlMark & stackMark,布尔 forIntrospection)166 System.Reflection.Assembly.Load(字符串 assemblyString)35
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(字符串 的AssemblyName,布尔starDirective)190

有什么问题 ?机器上的Oracle客户端是32位版本。 我在网上读过,它不可能利用System.data.OracleClient与32位oracle客户端?安装64位Oracle客户端是解决方案吗? TIA Registers

回答

1

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

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

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

+0

非常感谢GTG! –

0

GTG是正确的。

但是,不建议使用System.Data.OracleClient。微软不再支持它。

所以,我会建议你使用Oracle Data Provider for .Net: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)。

此外,请确保您编译应用程序为“任何CPU”,加上参考Oracle.DataAccess,设置“特定版本”,以“真”和“本地拷贝”到“假”。通过这样做,当您将应用程序部署到生产环境时,它将从GAC中查找相同的版本(11.2.1.0,64位等效项)。

相关问题