ASP.NET串連Oracle — 末日前的最後折騰

來源:互聯網
上載者:User

由於新系統的部分功能需要和另外一家公司做資料對接,而我們自家的系統採用的是Sql Server R2資料庫,對方的資料庫為Oracle 11g。就涉及到在ASP.NET程式中串連Oracle資料庫。這就是末日前我的工作。

在.NET Framework 4.0中,已經內建了對 Oracle資料庫操作的支援。只需要添加引用:System.Data.OracleClient。然後和串連SqlServer一樣,直接使用:OracleConnection,OracleCommand,OracleDataReader等屬性即可。

但如果你使用上面的串連方式,VS將會提示 System.Data.OracleClient 下面的相關操作已棄用。同時,MSDN上面對Oracle and ADO.NET的介紹中,也有以下說明:

The types in System.Data.OracleClient are deprecated. The types are supported in version 4 of the .NET Framework but will be removed in a future release. Microsoft recommends that you use a third-party Oracle provider.

老大的意思是:雖然目前在.NET Framework 4.0版本中整合了相關操作,但將來的.NET版本極有可能把它清理出去。並建議採集第三方的類庫完成Oracle的串連。

感覺這個東西就像個小姐,年輕的時候陪吃陪睡,張開腿就能掙錢,但說不定哪天人老珠黃,立馬滾蛋。雖然如此,由於時間關係,(必須抓緊時間享受末日前的寧靜),仍然採用了上述齷齪的串連方式。

然後,就像經常Call Lady的同志容易患花柳,梅毒,艾滋。接下來的兩個小時我也被折騰的夠嗆。

首先是在串連測試的時候提示以下資訊:

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

起初以為是 System.Data.OracleClient 到期或者Oracle版本導致的問題,男人的這種直覺直接導致我接下來的很長一段時間不得其門而入。隨後,在全能神的協助下找到了如下解決方案:

當Oracle 9.2運行在NTFS的分區上時,對於某些非administrator組的使用者,ORACLE_HOME 目錄是不可見的,而在windows server 2003下asp.net應用使用的帳戶是netword service,因此無法建立oracle串連,只要重設一下ORACLE_HOME目錄的許可權就可以了。步驟如下: 
1、以管理員的使用者登入; 
2、找到ORACLE_HOME檔案夾(本人的是D:\oracle\ora92,不要對著ORACLE檔案夾修改,因為ORACLE_HOME檔案夾是oracle下面的那個ora92檔案夾),點右鍵,選屬性--安全,在組或使用者欄中選“Authenticated Users”,在下面許可權列表中把“讀取和運行”的許可權去掉,再按應用;重新選上“讀取和運行”許可權,點擊應用;選許可權框下面的“進階”按鈕,確認“Authenticated Users”後面的應用於是“該檔案夾、子檔案夾及檔案”,按確定把許可權的更改應用於該檔案夾; 
3、重新啟動電腦,讓使用權限設定生效; 
4、登入後運行asp.net應用,正常取得Oracle資料庫的資料。

由於 Oracle 資料庫安裝在第三方的伺服器上面,同時上面又運行著正式的對外系統。上述引用的第3條“重啟電腦”會帶來諸多不便。值得慶幸的是,經過本人測試,只需要重啟IIS即可:iisreset /RESTART。

這樣折騰了一回,之前的提示資訊便消失了。但又出現了讓人蛋疼的新問題:

Attempt to load Oracle client libraries threw BadImageFormatException. This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed. 

由於幾乎肯定不能干預第三方的Oracle用戶端組件的安裝,就只有在本地想辦法,首當其衝的便是IIS。於是,接下來我便又開始探索IIS的各項設定。天可憐見,終於讓我找到上述問題的解決方案:

IIS管理器,應用程式集區,設定應用程式集區預設設定,啟動32為應用程式,設定為true ,確定。

再次測試,已成功串連。此時,距第一次問題的出現已過去了接近兩個鐘頭。猛然一陣尿意!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.