使用.net訪問oracle數據庫時一般需要在機器上安裝instantclient才能正常連接。
下面介紹一種不用安裝instantclient直接引用dll就用.net能連接oracle數據庫的方法:
1. 下載x86的ODAC1120320Xcopy_32bit包
使用x86的包是因為vs建立的asp.net項目默認指定的是x86的類庫,而且無論你將項目的target設置為64,或者x86使用的都是x86的類庫,
如果你引用的Oracle.DataAccess.dll是64bit的話在運行的時候會報錯。
2. 將一下5個文件從壓縮包中拷貝出來。
其中Oracle.DataAccess.dll使用類庫引用方式,其余四個類庫是C++類庫,要使用添加鏈接的方式,並設置為拷貝到輸出目錄。
3. 在VS中調試網站。OK,可以正常訪問數據庫。
4. 將網站部署到64bit的OS的IIS7中是發現,又出現BadImageFormatException。
問題在於asp.net在vs中調試時使用的是x86的類庫,但是iis中卻使用的是65bit的類庫,導致了Oracle.DataAccess.dll無法加載。
要解決此問題只需要將網站的線程池設置為使用32位應用程序即可。
注意在Asp.net應用中將Target設置為Any Cpu可以正常運行,
但是在windows或者console程序中Target必須設置為x86或者64才能正常運行。




