我從WSDL文件生成了一個WCF代理,但現在當我調用代理方法時,它們返回null。我已啓用消息日誌記錄,並可以看到來自服務器的消息正確返回。從WSDL生成的WCF代理,代理方法返回null
我已經檢查了this問題的答案,但在我的情況下,至少返回的對象的名稱在消息和WSDL中是相同的。我仍然認爲這個問題與WSDL文件有關,因爲它不是通過「?wsdl」URL(它是第三方web服務)的常用方式獲取的,但是是單獨給出的。
該方法的返回類型只是一個字符串。
有沒有其他人有類似的問題,以及有什麼相應的解決方案,如果有的話?問題的最可能來源是什麼?
重新編輯:
這是一個RPC /編碼的Web服務。正如所寫,我可以通過消息日誌查看SOAP響應,但WCF似乎無法解析信息。
從服務響應的消息部分看起來是這樣的:
<ns1:ServiceResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="the target namespace">
<ns1:ReturnValue xsi:type="xsd:string">
不過,從我的客戶檢查傳出消息的時候,它的不同:
<ns1:ServiceRequest soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="the target namespace">
<RequestValue xsi:type="xsd:string" xmlns="">
所以也許代理預期響應具有相同的名稱空間結構,因此無法解析它。
我已經盡力了type
屬性更改爲element
在WSDL消息定義,並在WSDL定義的types
部分加入一些新的元素,但隨後的SvcUtil工具生成代理時扼流圈,抱怨有衝突在推斷的樣式文檔和指定的樣式rpc之間。
從WSDL specification,第3.5節:
如果使用是編碼,則每個消息部分引用使用類型屬性的抽象類型。
但後來我有點困惑,因爲它似乎沒有在這question問題。進行類似更改需要什麼,限制它是RPC /編碼服務?
您是如何生成WSDL的? 您是否使用svcutil命令或在VSS中添加服務? 而且,你知道響應的格式(文本,MTOM?)以及它是什麼樣的web服務? – K2so 2009-12-05 19:06:54
正確:您是如何從WSDL生成類的? – K2so 2009-12-05 19:07:24