使用VS開發基於Oracle程式的嚴重問題

來源:互聯網
上載者:User

 基於Oracle開發時遇到
     資料連線不成功,請檢查該資料庫是否已啟動嘗試載入oracle用戶端時引發BadImageFormatException.如果在安裝32位Oracle用戶端組件的情況下以64位元模式運行,將出現此問題

  The Problem in english is :
       "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"  

    具體環境是:

      win2008  64

      vs 2010

        開發調試過程中都沒有問題,一部署這個問題就來了。

       然後經過一大堆改動,改裝64位Client之後的結果是:

        IIS測試都沒有問題,一調試這個問題就來了。

       最奇怪的是這兩個錯誤都是同樣的錯誤資訊。

       呵呵,兩種情況都 讓我碰到了,那就一起解決了他           

      我搞了整整兩天才解決,網上有是有相關資料,但是都不全。具體原因也不明了.下面我來全面的講述一下。

 追根究底:   

 請看:        

   

VS編譯器調試過程用的並不是IIS來發布   而是用上面這個進程。我們可以看到,他明顯是一個32位的。而IIS 7的進程w3wp是64 bit的。這就說明,如果我們在調試,那麼我們的程式就在類比32位運行,部署之後,確是類比64位運行,讓我最不能理解的是為什麼一個是類比32位運行,一個是類比64位運行,而給我們的異常資訊確實相同的呢?先不管這麼多,至少現在這裡我們可以得出一個結論:

如果你寫的程式調試過程沒有任何問題,那麼你發布到64位IIS時就一定會有問題,反之則得到相反的結果。                     
解決方案如下:

情況一.調試過程沒有任何問題,發布時出現問題

         若調試沒有任何問題,那麼你肯定是使用32 bit oracle client 了,而伺服器的IIS是64 bit的,所以需要發布網站的話,必須安裝64 bit client

實際上,System.Data.OracleClient所指向的是PATH環境變數下的oci.dll。因此,我們只要讓程式能夠找到64位的oci.dll就可以了。方法如下:

1. 下載instantclient-basic-win-x86-64-11.1.0.7.0.zip,並解壓,如C:\instantclient-basic-win-x86-64-11.1\instantclient_11_1(這個部分也是必須的,根據實際情況的不同進行修改)。

2. 在系統的環境變數PATH中加入以上路徑。

之後重啟作業系統(這個是必須的,我弄了一下午沒有搞好,結果重啟一下馬上就好了),程式會依照PATH路徑尋找oci.dll,如果遇到32位的oci.dll會自動略過,找到64位的oci.dll就能串連上資料庫了。

情況二.調試過程出現問題,但是在IIS上測試沒有問題

           若IIS測試沒有任何問題,那麼你肯定使用的是64 bit oracle client 了,調試出錯是因為調試的WebDev進程伺服器是32bit的,為了類比真實環境,你需要進行一些設定。

如果是這樣的情況,那你就改VS的調試伺服器吧,改成IIS就可以了。

 

     

       到這裡,我們可以下結論,Oracle 給的異常資訊對於第一種情況來說是正確的,對於第二種情況則是錯誤的,意思剛好相反!!!可能是做本地化人員的一個粗心錯誤。

      解決完這個問題之後,我的custom oracle  membership  for sharepoint的測試開發也就搞定了。近期還會記錄一篇文章講述custom oracle  membership  for sharepoint的開發總結。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.