2010-03-05 32 views
5

我通過WCF連接到第三方終端,並且遇到了一個問題。由WCF生成的SOAP信封的模式與端點不兼容。如何更改WCF中的SOAP Envelope模式?

目前WCF是產生這樣的:

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing"> 

但它需要是這樣的:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:a="http://www.w3.org/2005/08/addressing"> 

我在soapUI的測試,這個以確認這是問題,但我怎麼能控制這在WCF?我使用Visual Studio中的「添加服務引用」選項來生成服務。

任何想法?

在此先感謝。

Andy

+0

您是否嘗試過使用svcutil.exe創建代理? – Kangkan 2010-03-05 11:39:48

回答

15

很可能,您遇到了SOAP版本的問題。你使用什麼綁定?

basicHttpBinding默認爲SOAP 1.1,而wsHttpBinding默認爲SOAP 1.2

這是SOAP 1.1(在basicHttpBinding的默認值):

<SOAP-ENV:Envelope 
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
    SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> 

雖然這是SOAP 1.2(在的wsHttpBinding默認值):

<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 

可能的解決方案:

1)或者你可以切換綁定,這一切有 - 你需要確保檢查安全設置等等(這基本和的wsHttpBinding)

2)你們之間的差異需要創建自己的自定義綁定並明確指定您需要的SOAP版本

+0

工作得很好,謝謝! – andypike 2010-03-05 12:06:42

+0

哦!這真的很棒。 – Kangkan 2010-03-05 13:20:00

+0

哪個解決方案適合您?我也有同樣的問題,但解決方案1不適合我。我真的必須創建自己的自定義綁定嗎? – 2011-03-23 21:47:55

相關問題