我希望我的應用程序使用Oracle 11g ODAC,但它似乎是使用那些用於12c .... 如何強制我的應用程序使用11g ODAC?想使用ODAC的特定版本
出於某種原因,我有以下的客戶和ODT在我的電腦(Windows 7的SP1專業版64位):
- Oracle 11g Client (64-bit) version 11.2.0.3.0
- Oracle 12c Client (64-bit) version 12.1.0.1.0
- Oracle 12c ODT (Oracle Developer Tools for Visual Studio) (32-bit)
而且,我的NET項目(視覺工作室2013年)referes「Oracle.DataAccess .DLL」存儲在: C:\ WINDOWS \ Microsoft.NET \裝配\ GAC_64 \ Oracle.DataAccess \ v4.0_4.112.3.0__89b483f429c47342
我的環境路徑的順序是這樣的:
C:\oracle12c\product\12.1.0\client_2;
C:\oracle12c\product\12.1.0\client_2\bin;
C:\oracle12c\product\12.1.0\client_1;
C:\oracle12c\product\12.1.0\client_1\bin;
C:\Oracle\product\11.2.0\client_1;
C:\Oracle\product\11.2.0\client_1\bin;
我試圖在這樣的web.config文件中指定的DLLPath:
<oracle.dataaccess.client>
<settings>
<add name="DllPath" value="C:\Oracle\product\11.2.0\client_1\bin"/>
</settings>
</oracle.dataaccess.client>
但是,這是行不通的。 當的OracleConnection類的構造函數被調用時,我得到以下錯誤:
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
at Oracle.DataAccess.Client.OracleInit.Initialize()
at Oracle.DataAccess.Client.OracleConnection..cctor()
--- End of inner exception stack trace ---
任何信息都將是有益的。先謝謝你!
--- UPDATE 10月14日通過Yukapod ---
我發現我的應用程序不需要12C ODT 32位版本,所以我從我的電腦中刪除它,並再次嘗試。 然而,情況並沒有改變;在調用OracleConnection類的構造函數之後,我仍然收到「提供程序與Oracle客戶端版本不兼容」錯誤。我不知道哪裏出了問題....
我仍然在我的web.config配置如下:
<oracle.dataaccess.client>
<settings>
<add name="DllPath" value="C:\Oracle\product\11.2.0\client_1\bin"/>
</settings>
</oracle.dataaccess.client>
而且,這是我目前的環境PATH變量:
C:\oracle12c\product\12.1.0\client_1;
C:\oracle12c\product\12.1.0\client_1\bin;
C:\Oracle\product\11.2.0\client_1;
C:\Oracle\product\11.2.0\client_1\bin;
其中
C:\oracle12c\product\12.1.0\client_1
-> ORACLE_HOME for Oracle 12c Client (64-bit) version 12.1.0.1.0
Oracle\product\11.2.0\client_1
-> ORACLE HOME for Oracle 11g Client (64-bit) version 11.2.0.3.0
即使我顛倒了PATH變量的順序(我的意思是,讓11克是第一位的),結果沒有改變(仍然有相同的錯誤)。如果有人知道,任何類型的信息都會非常有幫助。再次提前謝謝你!
您的應用程序嘗試使用11g ODAC:C:\ Windows \ Microsoft.NET \ assembly \ GAC_64 \ Oracle.DataAccess \ v4.0_4。 ** ** 112。3.0__89b483f429c47342。但是,它會加載64位版本的「Oracle.DataAccess.dll」,但它會找到(第一個)32位Oracle客戶端二進制文件。如果你喜歡 - 或者在你的機器上同時使用32位和64位Oracle客戶機,請按照以下說明安裝它們:http://stackoverflow.com/questions/24104210/badimageformatexception-this-will-occur- 64-bit-mode-with-the-32#24120100 –
感謝您的快速響應,Wernfried!我發現我的應用程序不再需要12c ODT 32位版本,所以我從我的PC中刪除了它。然而,情況並沒有改變...... – yukapod
也看看這個:http://stackoverflow.com/questions/659341/the-provider-is-not-compatible-with-the-version-of-oracle-客戶端#25412992。我的建議是完全刪除所有Oracle安裝(請參閱:http://stackoverflow.com/questions/28727721/how-can-i-completely-uninstall-oracle-11g/28728711#28728711)並進行新的全新安裝。 –