在64位的環境中使用VS建立Web項目進行Oracle串連需要注意WebDev是32位的

來源:互聯網
上載者:User

我們平時使用的都是32位的機器進行開發,裝的都是32位的軟體,但是我們的伺服器一般都是64位的,所以有時也需要在64位的環境下裝一個VS偵錯工具。最近遇到的一個問題就是一個同事換了一個電腦,用的是X64的Windows 2008作為作業系統,要進行Oracle的資料庫連接,所以也裝了64位的Oracle用戶端。如果是控制應用項目或者WinForm項目可以正常串連Oracle,但是Web項目在程式中開啟Oracle串連時,系統拋出了異常:

嘗試載入 Oracle 用戶端庫時引發 BadImageFormatException。如果在安裝 32 位 Oracle 用戶端組件的情況下以 64 位元模式運行,將出現此問題。

顯然,這個提示的不正確,因為我們裝的就是64位的用戶端,所以並不存在64位程式調用32位用戶端的情況。難道是產生的程式是32位的,然後32位調用了64位的用戶端,於是我把程式屬性中的產生平台改為X64,:

結果這樣產生的WebService程式在調用時還是報同樣的異常。這個問題困擾了我一天,其中想到的解決辦法就是把64位的用戶端卸載了,在X64的作業系統中安裝32位的用戶端,然後這樣就可以了,但是如果不是Web應用(比如控制台應用程式或者WinForm程式)卻同樣報錯,那就需要將非Web應用的項目按照的設定方法,將產生的平台改為X86才能正常運行。

解決辦法:

這當然是一個折中的辦法,今天終於發現了真正的原因,原來VS在建Web項目時,平時運行使用的是內建的WebDev.WebServier是一個32位的服務,所以在其中啟動並執行Web項目不管怎麼設定平台,都只能作為32位的應用來看待,所以在Web項目運行時串連64位的Oracle用戶端會報錯,而非Web項目就不會。

網上搜了一下,好像WeDev服務好像沒有64位的,所以要解決這個問題,那麼就不要使用這個服務作為Web服務,而使用IIS,因為IIS使用的是w3wp,在64位的作業系統中是64位的,所以可以正常使用64位的Oracle用戶端。具體設定如下:

這樣設定後,每次運行就好以IIS來運行,不管是Web項目還是控制台應用項目或者WinForm項目,都會正常串連Oracle了。

相關文章

聯繫我們

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