遠程連接服務器的數據庫調試WCF程序時,可以正常訪問數據庫,但將程序發布成站點部署在數據庫所在的服務器之后,一直報錯,通過try/catch捕獲得到以下報錯信息:
System.Exception: SELECT CODE,NAME,LEVEL FROM SYSUSER WHERE CODE=12345\u000d\u000a嘗試加載 Oracle 客戶端庫時引發 BadImageFormatException。如果在安裝 32 位 Oracle 客戶端組件的情況下以 64 位模式運行,將出現此問題。
根據報錯信息可以初步判斷,出錯原因是:項目中連接Oracle用的System.Data.OracleClient和服務器上安裝的Oracle客戶端位數不同。
本人根據網上提供的各種方法嘗試了很久:
- 將程序的平台目標改為X86
- 安裝Oracle 11gR2 32-bit的客戶端
- 在工具網站中設置對網站和項目使用IIS Express64位版
- ....
但都沒能解決問題。
最終我想既然是和程序的位數有關,於是死馬當做活馬醫,在IIS中將程序所在應用程序池中的“啟用32位應用程序”改為false,最終解決了問題。
此處建議新建一個應用程序池,不要直接修改DefaultAppPool,防止其它程序使用時需要啟用32位應用程序。
當然,可能每個人出現該錯誤的原因都有所不同,所以這里只是提供一種解決問題的思路,具體應根據實際情況尋找解決方案。
原文地址:https://www.cnblogs.com/imdeveloper/p/10652511.html
轉載請注明出處,謝謝!