部署一個新程式到一台主機上,得到以下錯誤訊息:

System.Data.OracleClient requires Oracle client software version 8.1.7 or greater.

同一程式在另一台主機上表現正常,而這台機器上其他ASP.NET程式跑ODP.NET連線Oracle也正常,可以推論已裝了Oracle 9.2 Client。那這是怎麼一回事呢?

在與Oracle Client交戰的經驗中,這類狀況多半是Oracle Client相關檔案存取問題引起的。廢話不多說,喚出抓鬼一哥--Process Monitor!!

輕輕鬆鬆就抓到以下的Log:

由這個Log來看,ASP.NET正沿著PATH環境變數列出的路徑一一尋找oci.dll,但始終沒找到,看來就是讓System.Date.OracleClient判定Oracle Client Software沒裝的原因。比對了其他機器,oci.dll理應出現在bin目錄下,但該台主機卻缺了這個檔案。

由其他機器Copy oci.dll到bin目錄下,問題就消失了。Case Closed! 收工回家。


Comments

Be the first to post a comment

Post a comment