問題:System.InvalidOperationException: 嘗試加載 Oracle 客戶端庫時引發BadImageFormatException。如果在安裝32 位Oracle 客戶端組件的情況下以64 位模式運行,將出現此問題。---> System.BadImageFormatException: 試圖加載格式不正確的程序。 (異常來自HRESULT:0x8007000B)
分析:提示很明顯在64 bits的環境下使用了32位的oracle客戶端組件。但是我們檢查oracle是安裝的64bits的服務端程序,並沒有安裝32的任何組件。(IIS程序池以32位模式運行)
檢查IIS配置,發現Application Pool被設置成了運行32位模式。那麼這樣會導致程序使用32位的Oracle客戶端運行在這32位的應用程序池。
因為IIS啟動該應用程序池的工作進程,是一個32位的過程中,當它試圖加載CLR,它會加載的32位CLR,因此將在32位模式下加載程序集。這即使您的程序集編譯為64位和32位模式。在32位模式下運行您的程序集,然後可以調用Oracle客戶端,將在32位模式下運行。
解決:設置application pool的配置Application Pools -> Advanced Settings -> Enable 32-Bit Applications為true。