這幾天開發一個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>
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
