Asp.net連接Oracle 9i失敗解決方法

安裝完ASP.NET,Oracle9i客戶端後,使用System.Data.OracleClient訪問Oracle數據庫如果出現這種錯誤:
System.Data.OracleClient requires Oracle client software version 8.1.7 or greater.

原因
Oracle 9i Release 2 客戶端在安裝到Windows的NTFS分區下時的安全認證設置不正確,引起本機的Authenticated Users用戶無法看到ORACLE_HOME目錄下的內容; 這導致在ASP.NET以Authenticated Users權限使用System.Data.OracleClient連接Oracle數據庫時報出以上錯誤。

解決方法:
在oracle/bin目錄,加入給以下用戶/組,授完全權限:
asp.net machine account
administrator
authenticated users
並且將Asp.net加入到administrator組,再重啓IIS

上面這種方法是實踐過可行的,

網上還有一種方案,大抵相同,有細小區別,其實不主張將asp.net加入administrator,也不主開開過份大的權限,但下面這種方法,試過似乎不可行:

以Administrator權限登錄Windows.
啓動Window 資源瀏覽器找到ORACLE_HOME目錄,如C:/Oracle/ora92
右鍵彈出菜單,選擇該目錄共享與安全(Win2000下要點擊屬性)
點擊 “安全” 頁籤
在組和用戶名稱列表中點擊“Authenticated Users” 項.
在該用戶的權限列表中,將“讀取和運行”的選擇框置爲不選中狀態
再次點擊“讀取和運行”的選擇框,將其設置爲選中狀態
點擊“高級”按鈕並在權限項目中確定“Authenticated Users” 是否擁有“讀取並運行”權限並應用於“該文件夾,及子文件夾和文件”. 如果不是,雙擊這樣,並確保權限可以“應用於” “該文件夾,及子文件夾和文件”. 該項非常重要你一定要覈查.
點擊“確定” 按鈕
重啓動, 以使得所有的修改生效.

Oracle 9.2下的“System.Exception: System.Data.OracleClient requires Oracle client software version 8.1.7 or greater”
今天在連接Oracle的時候碰到一個問題,我的機器裝的是Oracle9.2客戶端,當在asp.net應用中使用數據訪問的組件(調用System.Data.OracleClient)時,程序報“System.Exception: System.Data.OracleClient requires Oracle client software version 8.1.7 or greater”的錯誤,無法創建OracleConnection,但在同一臺機器上用winfom客戶端又能夠正常訪問到數據庫。更加奇怪的是,我把應用部署到一臺安裝了Oracle 8.17客戶端的機器上時,卻能夠正常運行。
找了半天 ,終於搞清楚了原因。原來當Oracle 9.2運行在NTFS的分區上時,對於某些非administrator組的用戶,ORACLE_HOME 目錄是不可見的,而在windows server 2003下asp.net應用使用的帳戶是netword service,因此無法創建oracle連接,只要重設一下ORACLE_HOME目錄的權限就可以了。步驟如下:
1、以管理員的用戶登錄;
2、找到ORACLE_HOME文件夾(我的是C:/oracle/ora92),點右鍵,選屬性--安全,在組或用戶欄中選“Authenticated Users”,在下面權限列表中把“讀取和運行”的權限去掉,再按應用;重新選上“讀取和運行”權限,點擊應用;選權限框下面的“高級”按鈕,確認“Authenticated Users”後面的應用於是“該文件夾、子文件夾及文件”,按確定把權限的更改應用於該文件夾;
3、重新啓動計算機,讓權限設置生效(請注意,這一步很重要);
4、登錄後運行asp.net應用,正常取得Oracle數據庫的數據。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章