2017-02-10 35 views
0

我遇到了我們在這裏的服務問題。Oracle.DataAccess出錯

我有這個錯誤:

System.IO.FileNotFoundException : Could not load file or assembly 'Oracle.DataAccess, Version=4.112.4.0, Culture=neutral, PublicKeyToken=X' or one of its dependencies.' 

所以,我猜我會在我的項目的bin文件夾添加DLL的,沒什麼太大了吧?

然後,我有這樣的錯誤:

Could not load file or assembly 'Oracle.DataAccess' or one of its dependencies. An attempt was made to load a program with an incorrect format. 

好吧,我以前見過這個,只要到應用程序池,並設置了「啓用32位應用程序」爲true ....對嗎?

OpenDBConnection: Error occurred. System.TypeInitializationException: 
The type initializer for 'Oracle.DataAccess.Client.OracleConnection' threw an exception. 
---> Oracle.DataAccess.Client.OracleException: The provider is not compatible with the version of Oracle client 

好吧...沒問題,讓我檢查一下:服務器是2008 R2企業版x64。然後我會編譯成x64。

Could not load file or assembly 'Oracle.DataAccess' or one of its dependencies. An attempt was made to load a program with an incorrect format. 

現在,這個爛攤子已經持續了幾天。我生氣了,因爲我明顯在轉圈,但無法確定出口的位置。

我安裝了Oracle 1120_32和1120_64(這是11.2.0.2.0版本),安裝了.NET 4.0。 我試過編譯「任何CPU」。 我試過將dll屬性設置爲「Specific version = false」,「Copy Local = true」,以及相反。 我已經試過了讓程序的舊版本,並在代碼中進行所需的更改後重新編譯它們,保留舊的配置。 我試着繞着一個仙人掌唱歌,「請大條例草案,讓這個DLL加載」。

我檢查了很多鏈接,但是這發生在遠程環境中,所以我沒有選擇設置斷點或任何可以看到的程序試圖加載的任何dll,並且大多數鏈接建議(re )在服務器上安裝oracle客戶端,但是因爲我不得不向管理員詢問這個問題,所以我寧願確認那裏沒有最後的嘗試。

有人可以幫忙嗎?

+0

您是如何安裝32位和64位Oracle客戶端的?看看這個指令:http://stackoverflow.com/questions/24104210/badimageformatexception-this-will-occur-when-running-in-64-bit-mode-with-the-32#24120100,resp。 http://stackoverflow.com/questions/659341/the-provider-is-not-compatible-with-the-version-of-oracle-client#25412992 –

+0

@WernfriedDomscheit以及我不是服務器管理員,所以我沒有沒有安裝任何東西:)正如在帖子中所說,我已經看到帖子說重新安裝'可能'做的伎倆,但我希望其他東西... – DoctorPrisme

+0

聽起來很奇怪,但我有一些類似的東西回來與我相信VS2013。解決方法是刪除(刪除)VS中的引用,然後將其添加回去(32位odac)。 – tbone

回答

0

如果應用程序池啓用了32位,那麼oracle客戶端和應用程序也需要爲32位。

我認爲管理的ODAC不會那麼痛苦。

如果你想要去的64位,確保一切是64位(應用程序,應用程序池和ODAC)

此外,Windows Sysinternals的進程監視器可能是有用的,以確定哪些非託管的DLL正在由加載您的應用使用Oracle.DataAccess.dll。

+0

我不知道你是什麼意思的託管ODAC 我同時安裝了oracle客戶端32和oracle客戶端64,我的問題是真的「如何強制程序加載這個特定的DLL「,因爲它似乎嘗試使用舊的。 謝謝 – DoctorPrisme

+0

託管的odac是一個不同的下載請參見[鏈接](http://www.oracle.com/technetwork/database/windows/下載/ utilsoft-087491.html),它並不需要安裝所有的非託管客戶端DLL,未安裝的odac使用註冊表項和環境路徑和變量來確定要使用哪個客戶端 –

+0

BadImageFormatException:無法加載文件或程序集'NameOfYourAppHere '或它的一個依賴關係,試圖加載格式不正確的程序 這意味着有一個應用程序池和應用程序或應用程序與Oracle.DataAccess.dll之間的位差不匹配。 如果應用程序池已啓用32位應用程序,則該應用程序將在x64或oracle.dataaccess.dll中編譯爲x64。或者如果App Pool沒有啓用32位應用程序,則在x86或oracle.dataaccess.dll中編譯的應用程序爲x86(應用程序池不支持x86) –

相關問題