C# 調用 WebService 連接ORACLE 11g


這幾天開發一個WebService遇到很多問題,記錄下來順便幫助一下以后遇到情況的人。

我是通過ADO.NET來連接ORACLE的,也可以用ORACLE提供的ODP.NET。

通過正常的連接后部署IIS 用IE調用我的接口出現了

“System.InvalidOperationException: 嘗試加載 Oracle 客戶端庫時引發 BadImageFormatException。如果在安裝 32 位 Oracle 客戶端組件的情況下以 64 位模式運行,將出現此問題。 ---> System.BadImageFormatException: 試圖加載格式不正確的程序。”

解決這個問題:

第一步原因:

我服務器系統是 Server2008 R2 64位 ORACLE的服務端安裝的是64位,客戶端安裝64位,為了解決了這個問題,我通過WinForm程序測試用ADO.NET通過64位的ORACLE客戶端連接64位服務端始終不成功。無奈之下安裝了32位的客戶端后就可以訪問了。

第二步原因:

我開發WebService的時候用2.0的框架,我本機系統是64位的WIN7,在生成程序的時候我是默認的Any CPU。可能生成發布的時候是64位的,網上有說改為X86,但這種方法也依然無法解決我的額外難題,然后我在IIS里對應網站的應用程序池里把“啟用32應用程序”設位Treu 這下可以運行了。

在調用WEBSERIVCE的時候又出現了問題,在IE調用接口報“webservice 返回datatable無法序列化 DataTable。未設置 DataTable 名稱。” 我webService調用了一個方法 方法返回值是DataTable 按照提示我把 DataTable加載了 Name但還是沒有解決這個問題,應為DataTable無法序列化 后來轉換為了DataSet解決了這個問題。

還有一個問題是沒有在目標機器上也就是沒有在部署的WEBSERIVCE的IIS機器上訪問Web接口的時候會出現“測試測試窗體只能用於來自本地計算機的請求。”的錯誤,這個問題解決方法要在配置文件里面添加

在web.config的<system.web></system.web>中間加入如下配置節內容
<webServices>
         <protocols>
            <add name="HttpSoap"/>
            <add name="HttpPost"/>
            <add name="HttpGet"/>
            <add name="Documentation"/>
         </protocols>
</webServices>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM