這幾天開發一個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>