当试图从.net连接到oracle数据库时,出现以下异常:
尝试加载Oracle客户端库时引发BadImageException。在安装了32位Oracle客户端组件的情况下以64位模式运行时会出现此问题。
在经过许多链接后,我试图通过将平台目标更改为Any CPU来克服此异常。由于它是wpf应用程序,在更改平台目标后,它会抛出以下异常:
对与指定绑定约束匹配的类型“SSC_GIP_UI.MainWindow”调用构造函数时引发了异常。“行号”3“和行位置”9“
但它在平台目标x86上运行良好,没有抛出上述异常,但它抛出BadImageFormatException
。
我正在工作的环境是:Windows Server 2008,
.net framework 4.0,oracle 11g(64位)
谁能告诉me.how来修复它?
3条答案
按热度按时间3j86kqsm1#
此错误表示应用程序中的32位和64位组件不匹配。
当您在64位Windows中运行应用程序时,它可能以64位或32位运行。如果您将平台目标设置为x86,则它将以32位运行。如果您将平台目标设置为x64或AnyCpu,则它将以64位运行。
Oracle有不同版本的客户端,一个是32位,另一个是64位。因此,如果您的应用程序在32位模式下运行,则需要确保安装了32位Oracle客户端。
1l5u6lss2#
我觉得你应该:打开IIS,查找此应用程序使用的应用程序池转到该应用程序池,在“启用32位应用程序”中设置标记
qcuzuvrc3#
一个完全替代的解决方案是使用Oracle Data Provider for .NET,它将给予您对Oracle.ManagedDataAccess dll的访问权,无论您是在32位还是64位上都可以工作。阅读this article from Oracle Magazine以获得一个温和的介绍。
您可以使用与System.Data.OracleClient几乎相同的方式来使用它,尽管我不确定两者之间是否存在功能对等,因此您的里程可能会有所不同。