使用 C# 連線 Oracle 資料庫時,需要安裝 ODAC (Oracle Data Access Components),這元件有分 32 位元64 位元的版本,除了要用對版本外,不同的 Visual Studio 版本,也需配合不同的 ODAC 版本

以為裝對版本就沒事了,正當要測試網站的時候,卻出現這個畫面:

無法載入檔案或組件 'Oracle.DataAccess' 或其相依性的其中之一。 試圖載入格式錯誤的程式。

Google 這個錯誤訊息 無法載入檔案或組件 'Oracle.DataAccess' 或其相依性的其中之一。 試圖載入格式錯誤的程式。,找到的資料幾乎都是因為版本問題所以出現這狀況,讓我想到會不會是因為 IIS 的支援問題。

IIS Express 預設是使用 32 位元模式來執行,因此如果你的元件是 64 位元的時候,就無法正常運作,要怎麼知道目前所執行的 IIS Express 是用哪種模式執行呢?很簡單,開啟工作管理員然後找到 IIS Express 這個處理程序就會知道了,如果是 32 位元的程序,他後面就會標註(32位元)

IIS Express 系統匣

謎題解開一半了,再來就是如何開啟 64 位元模式。

Visual Studio 果真是地表上最強的 IDE,裡面的設定多如牛毛,好險有提供快速啟動(Ctrl+Q),只要輸入 iis 就可以找到相關的設定選項。

Visual Studio 快速啟動

接著來到工具 > 選項 > 專案和方案 > Web 專案下,將這個選項將 64 位元版本的 IIS Express 用於網站和專案勾起來,一切就大功告成了。

將 64 位元版本的 IIS Express 用於網站和專案


參考資料:


Poy Chang

Trial and Error