這幾天開發(fā)一個(gè)WebService遇到很多問題,記錄下來順便幫助一下以后遇到情況的人。
我是通過ADO.NET來連接ORACLE的,也可以用ORACLE提供的ODP.NET。
通過正常的連接后部署IIS 用IE調(diào)用我的接口出現(xiàn)了
“System.InvalidOperationException: 嘗試加載 Oracle 客戶端庫(kù)時(shí)引發(fā) BadImageFormatException。如果在安裝 32 位 Oracle 客戶端組件的情況下以 64 位模式運(yùn)行,將出現(xiàn)此問題。 ---> System.BadImageFormatException: 試圖加載格式不正確的程序?!?
解決這個(gè)問題:
第一步原因:
我服務(wù)器系統(tǒng)是 Server2008 R2 64位 ORACLE的服務(wù)端安裝的是64位,客戶端安裝64位,為了解決了這個(gè)問題,我通過WinForm程序測(cè)試用ADO.NET通過64位的ORACLE客戶端連接64位服務(wù)端始終不成功。無(wú)奈之下安裝了32位的客戶端后就可以訪問了。
第二步原因:
我開發(fā)WebService的時(shí)候用2.0的框架,我本機(jī)系統(tǒng)是64位的WIN7,在生成程序的時(shí)候我是默認(rèn)的Any CPU??赡苌砂l(fā)布的時(shí)候是64位的,網(wǎng)上有說改為X86,但這種方法也依然無(wú)法解決我的額外難題,然后我在IIS里對(duì)應(yīng)網(wǎng)站的應(yīng)用程序池里把“啟用32應(yīng)用程序”設(shè)位Treu 這下可以運(yùn)行了。
在調(diào)用WEBSERIVCE的時(shí)候又出現(xiàn)了問題,在IE調(diào)用接口報(bào)“webservice 返回datatable無(wú)法序列化 DataTable。未設(shè)置 DataTable 名稱。” 我webService調(diào)用了一個(gè)方法 方法返回值是DataTable?按照提示我把 DataTable加載了 Name但還是沒有解決這個(gè)問題,應(yīng)為DataTable無(wú)法序列化 后來轉(zhuǎn)換為了DataSet解決了這個(gè)問題。
還有一個(gè)問題是沒有在目標(biāo)機(jī)器上也就是沒有在部署的WEBSERIVCE的IIS機(jī)器上訪問Web接口的時(shí)候會(huì)出現(xiàn)“測(cè)試測(cè)試窗體只能用于來自本地計(jì)算機(jī)的請(qǐng)求?!钡腻e(cuò)誤,這個(gè)問題解決方法要在配置文件里面添加
在web.config的<system.web></system.web>中間加入如下配置節(jié)內(nèi)容
<webServices>
???????? <protocols>
??????????? <add name="HttpSoap"/>
??????????? <add name="HttpPost"/>
??????????? <add name="HttpGet"/>
??????????? <add name="Documentation"/>
???????? </protocols>
</webServices>
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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