使用C#通過Oracle.DataAccess串連Oracle,部署時需要注意版本問題

來源:互聯網
上載者:User

平時我們開發使用的是32位的PC機,所以安裝的也是Oracle32位的用戶端。但是一般伺服器都是64位的,安裝的也是64位的Oracle用戶端,如果要部署使用Oracle.DataAccess串連Oracle的應用程式時,可能會遇到版本上的問題。

主要版本問題有兩種,一種是32位版和64位版的問題,如果我們開發出來的應用是32位的,那麼就必須使用32位的用戶端,如果是64位的應用程式當然對應64位的用戶端。這裡需要注意:在64位的環境中使用VS開發Web程式,其啟動並執行Web服務“WebDev.WebServer.exe”是32位的,所以如果要調試64位的Oracle串連程式,最好是部署到IIS中,使用IIS來串連Oracle資料庫。

另一個版本問題是Oracle.DataAccess的版本號碼問題,我的本機就是32位的XP,安裝了Oracle11gR2用戶端後,在安裝目錄下的ODP.NET\bin\2.x目錄中可以找到Oracle.DataAccess.dll檔案,可以看到其版本號碼是:2.112.1.2。所以我開發出來的程式,引用的也是這個版本的庫。

但是在64位下的Oracle.DataAccess.dll卻不一樣,安裝後的版本是2.112.1.0,是Windows2008X64上的Oracle.DataAccess.dll。

現在把開發環境的程式發布部署到伺服器上,就會拋出異常

未能負載檔案或程式集“Oracle.DataAccess, Version=2.112.1.2, Culture=neutral, PublicKeyToken=89b483f429c47342”或它的某一個依賴項。

或者是

Could not load file or assembly 'Oracle.DataAccess, Version=2.112.1.2, Culture=neutral, PublicKeyToken=89b483f429c47342' or one of its dependencies. An attempt was made to load a program with an incorrect format之類的話。

總之就是找不到對應的程式集。顯然,這裡系統找的是2.112.1.2版本的Oracle.DataAccess,而伺服器上只有2.112.1.0版本的,所以才報錯,解決辦法就是在web.config中修改,在configSections節點結束之後增加如下內容:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="Oracle.DataAccess"
            publicKeyToken="89B483F429C47342"
            culture="neutral" />
            <bindingRedirect
              oldVersion="2.112.1.2"
              newVersion="2.112.1.0"/>
        </dependentAssembly>
    </assemblyBinding>
</runtime>

這樣就可以讓IIS調用2.112.1.0的Oracle.DataAccess了。添加這個配置後便可正常運行。

相關文章

聯繫我們

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