2013-03-19 49 views
6

嘗試從.NET收到以下異常連接到Oracle數據庫:嘗試加載Oracle客戶端庫扔BadImageFormatException

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.

經過許多環節去後,我試圖通過改變平臺來克服這個例外目標任何CPU.Since是WPF應用程序,改變目標平臺後拋出以下異常:

'The invocation of the constructor on type 'SSC_GIP_UI.MainWindow' that matches the specified binding constraints threw an exception.' Line number '3' and line position '9'.

但是它在平臺目標x86下運行良好,沒有拋出上述異常,但它拋出了BadImageFormatException

的enironment上我工作是: Windows Server 2008中,
的.NET Framework 4.0, 的Oracle 11g(64位)

誰能告訴me.how解決?

回答

6

此錯誤表示您的應用程序中的32位和64位組件之間不匹配。

當您在64位Windows中運行應用程序時,它可能會以64位或32位運行。如果您已將平臺目標設置爲x86,則它將以32位運行。如果您已將平臺目標設置爲x64或AnyCpu,它將以64位運行。

Oracle有不同版本的客戶端,一個是32位,另一個是64位。因此,如果您的應用程序以32位模式運行,則需要確保已安裝32位Oracle客戶端。

5

我想也許你必須: 打開IIS,查找應用程序池此應用程序使用 轉到該應用程序池,在「啓用32位應用程序的

+0

謝謝。難怪我的工作不是通過web應用程序工作,而是通過win32應用程序正常工作。 – 2013-05-23 07:35:30

0

一個完全另一種解決辦法是設置一個標誌使用Oracle Data Provider for .NET這將允許您訪問Oracle.ManagedDataAccess DLL,無論您是在32位還是64位,都可以工作。請閱讀this article from Oracle Magazine進行溫和的介紹。

雖然我不知道是否有這兩者之間的功能奇偶校驗,所以你的里程可能會有所不同,您可以使用它幾乎是相同的方式System.Data.OracleClient的。

相關問題