上次做了一個小的EXE應用程序,發給老大后,昨天老大告訴我程序在服務器端運行會拋出異常。
今天我從早上上班一直弄到寫這篇BLOG,才解決掉。
設置斷點進去跟蹤發現是在Conncetion.open()時,會拋出異常,異常顯示
提供程序與此版本的ORACLE客戶機不兼容
服務器版本:
異常如下:
詳細錯誤清單:(我用GG翻譯了)
主要是不能連接ORACLE數據庫,連接DLL用的是 版本為2.112.1.2的ORACLE.DATAACCESS.DLL,在我自己的電腦上運行沒有問題,在服務器端運行就會拋出異常。
為了解決問題我嘗試了用更新的版本。但是他還是會拋出同樣的問題。
最后我想起了.NET中自帶有微軟的ORACLE訪問借口,於是我就用了SYSTEM.DATA.ORACLECLIENT這個組件,問題得到了解決。
部分代碼:(注釋的就是調用的ORACLE.DATAACCESS.DLL組件的方法)

1 protected DataSet GetData() 2 { 3 4 //Oracle.DataAccess.Client.OracleConnection conn = new Oracle.DataAccess.Client.OracleConnection(connstr); 5 System.Data.OracleClient.OracleConnection conn = new OracleConnection(connstr); 6 try 7 { 8 conn.Open(); 9 //Oracle.DataAccess.Client.OracleCommand com = conn.CreateCommand(); 10 OracleCommand com = conn.CreateCommand(); 11 com.CommandText = "select * from DL_GOVT_NOTICE_INFO";//"select * from DL_GOVT_NOTICE_EXP_HIST"; 12 //Oracle.DataAccess.Client.OracleDataAdapter apter = new Oracle.DataAccess.Client.OracleDataAdapter(com); 13 OracleDataAdapter apter = new OracleDataAdapter(com); 14 DataSet ds = new DataSet(); 15 apter.Fill(ds); 16 apter.Dispose(); 17 conn.Dispose(); 18 return ds; 19 } 20 catch (Exception ex) 21 { 22 this.LabShowInfo.Text = "Error: " + ex.Message; 23 conn.Close(); 24 return null; 25 } 26 27 }
詳細情況我現在也還很糊塗,希望對有出現類似情況的同志有所幫助。
嗯,VS工具是2008中文版!