C# 調用 WebService 鏈接ORACLE 11g

這幾天開發一個WebService遇到不少問題,記錄下來順便幫助一下之後遇到狀況的人。web

我是經過ADO.NET來鏈接ORACLE的,也能夠用ORACLE提供的ODP.NET。服務器

經過正常的鏈接後部署IIS 用IE調用個人接口出現了框架

「System.InvalidOperationException: 嘗試加載 Oracle 客戶端庫時引起 BadImageFormatException。若是在安裝 32 位 Oracle 客戶端組件的狀況下以 64 位模式運行,將出現此問題。 ---> System.BadImageFormatException: 試圖加載格式不正確的程序。」測試

解決這個問題:網站

第一步緣由:spa

我服務器系統是 Server2008 R2 64位 ORACLE的服務端安裝的是64位,客戶端安裝64位,爲了解決了這個問題,我經過WinForm程序測試用ADO.NET經過64位的ORACLE客戶端鏈接64位服務端始終不成功。無奈之下安裝了32位的客戶端後就能夠訪問了。orm

第二步緣由:接口

我開發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>

相關文章
相關標籤/搜索