2013-05-14 113 views
9

我剛剛從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

回答

9

我發現,您必須安裝32位Oracle客戶端(可以download the installer從他們的網站),即使你是一個64位的機器上運行。

此外,在討論過程中,人們正在討論32位模式等。這是如何檢查/設置IIS 7託管應用程序的方式。你不需要改變這一點,但我已經在這裏添加完整性/未來的參考。

  • 啓動IIS 7並展開服務器名稱節點。
  • 單擊應用程序池節點並找到您正在使用的應用程序池 。
  • 在右側面板中點擊高級設置...
  • 在出現檢查啓用32位應用程序設置從頂部第三個選項的彈出框。
5

您必須將主要的.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

2

我一直在爲這個問題奮鬥了幾個月,現在終於解決了。我認爲所有的帖子都很有幫助,但我有一個缺失的部分。我沒有用於用戶DSN或系統DSN的Oracle實例安裝的Microsoft ODBC。我正在使用Windows 8機器。所以對我來說,我不得不進入一般的Windows搜索並輸入ODBC並打開ODBC數據源管理器(32位)。檢查用戶DSN選項卡或系統DSN選項卡上是否有用於Oracle安裝的Microsoft ODBC。如果不點擊添加並選擇Microsoft ODBC for Oracle。填寫您嘗試點擊的數據源的信息,然後單擊確定。請確保重新啓動您的電腦,這是最終爲我工作。希望這有助於你們中的一些人。

0

在我的情況下,我的機器上安裝了64位Oracle客戶端,但仍然出現相同的錯誤。因此,我分析了在我的應用程序中,如果使用本地IIS Web服務器,請轉到應用程序右鍵單擊轉到 - >屬性 - > Web選項卡 並取消選中「使用IIS Express」選項。 問題解決了。

相關問題