在64位机器上以32位模式运行Oracle客户机

问题描述:

我刚刚从32位Windows 7桌面迁移到64位Windows 7笔记本电脑。我们有一个我们正在开发的C#程序,其中包含解决方案中的大约60个项目。我不断收到以下错误,而试图建立:在64位机器上以32位模式运行Oracle客户机

Attempt to load Oracle client libraries threw BadImageFormatException. This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed 

显然错误是相当自我解释,我试图让我的整体解决方案在32位模式下加载。我已经完成了每个项目,并将目标平台设置为x86,但我仍然遇到此错误。我搜索了Google,看到了无数不同的方法,但我似乎无法解决这个问题。确保我的项目在64位机器上以32位模式运行的最佳方式是什么?

我正在使用Visual Studio 2008.我目前正在考虑降级到32位,但真的想避免必须这样做。

+0

目前还不清楚 - 在构建过程中或运行应用程序时是否出现此错误? – 2013-05-14 08:44:31

+0

构建成功,但加载第一页(它是基于Web的应用程序)时,它在尝试连接到Oracle DB时会引发此错误。 – Joseph 2013-05-14 08:45:21

+0

您使用的是哪种Oracle客户端(32位或64位)? – Belogix 2013-05-14 10:17:58

我发现,您必须安装32位Oracle客户端(可以download the installer从他们的网站),即使你是一个64位的机器上运行。

此外,在讨论过程中,人们正在讨论32位模式等。这是如何检查/设置IIS 7托管应用程序的方式。你不需要改变这一点,但我已经在这里添加完整性/未来的参考。

  • 启动IIS 7并展开服务器名称节点。
  • 单击应用程序池节点并找到您正在使用的应用程序池 。
  • 在右侧面板中点击高级设置...
  • 在出现检查启用32位应用程序设置从顶部第三个选项的弹出框。

您必须将主要的.exe文件更改为仅以32位运行。您可以在Visual Studio中执行此操作 - 只需将平台目标从“任何CPU”更改为“x86”即可。

如果这是不可能的,使用corflags.exe强制现有的exe是一个32位应用程序。

+0

我没有在工具栏中的下拉列表中的x86,所以我想我将不得不使用corflags.exe。从你友好的链接到我的页面,我假设我需要运行“CorFlags.exe程序集/ 32BIT +”程序集的值是什么?谢谢。 – Joseph 2013-05-14 08:50:50

+0

程序集 - 您的exe文件。在Visual Studio中,右键单击您的项目,选择属性。选择Build选项卡,并在其上有Platform目标。在这个组合中,你有任何CPU,x86,x64 – 2013-05-14 09:08:34

+0

我刚刚阅读了你正在使用web应用程序的评论。您可以在IIS中设置此:https://help.webcontrolcenter.com/KB/a1114/how-to-enable-32-bit-application-pool-iis-7-dedicatedvps.aspx – 2013-05-14 09:12:19

我一直在为这个问题奋斗了几个月,现在终于解决了。我认为所有的帖子都很有帮助,但我有一个缺失的部分。我没有用于用户DSN或系统DSN的Oracle实例安装的Microsoft ODBC。我正在使用Windows 8机器。所以对我来说,我不得不进入一般的Windows搜索并输入ODBC并打开ODBC数据源管理器(32位)。检查用户DSN选项卡或系统DSN选项卡上是否有用于Oracle安装的Microsoft ODBC。如果不点击添加并选择Microsoft ODBC for Oracle。填写您尝试点击的数据源的信息,然后单击确定。请确保重新启动您的电脑,这是最终为我工作。希望这有助于你们中的一些人。

在我的情况下,我的机器上安装了64位Oracle客户端,但仍然出现相同的错误。因此,我分析了在我的应用程序中,如果使用本地IIS Web服务器,请转到应用程序右键单击转到 - >属性 - > Web选项卡 并取消选中“使用IIS Express”选项。 问题解决了。

您必须将主要的.exe文件更改为仅以32位身份运行。您可以在Visual Studio中执行此操作 - 只需将Platform目标从“Any CPU”更改为“x86”即可。 https://msdn.microsoft.com/en-us/library/ms185328.aspx