我有一個第三方SOAP客戶端能夠與舊的ASMX webservices進行通信。WCF SOAP答覆ASMX SOAP答覆格式
問題是與WCF服務。
我的WCF服務從這個客戶端接收消息沒有問題,但客戶端不喜歡我的WCF響應。
我測試的WCF服務發出如下回應:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<testResponse xmlns="http://www.tempuri.org">
<testResult>randomStringData</testResult>
</testResponse>
</s:Body>
</s:Envelope>
但老SOAP客戶端預計這種反應(ASMX服務):
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<testResponse xmlns="http://tempuri.org/">
<testResult>randomStringData</testResult>
</testResponse>
</soap:Body>
</soap:Envelope>
我沒有對客戶端沒有控制。 有沒有一種方法可以配置我的WCF發送與ASMX服務完全相同的消息?
我的WCF服務使用以下綁定:
<customBinding>
<binding name="soap11">
<textMessageEncoding messageVersion="Soap11" writeEncoding="utf-8"></textMessageEncoding>
<httpTransport></httpTransport>
</binding>
</customBinding>
如果這兩個響應之間的唯一區別是「s:」而不是「soap:」,那麼這兩者就XML而言是相同的。即使對於傳統的ASMX服務或客戶端,兩者也是相同的。命名空間前綴(「s:」)只是實際命名空間的別名,命名空間是相同的。 –
我有一種感覺,舊的SOAP客戶端已經硬編碼xml解析並正在搜索字符串「
Tanel
我認爲約翰是正確的:與'soap:'相同'無論如何你可以嘗試curl實際發送原始xml,所以你可以用soap配置soap調用:作爲命名空間 – Fabio