2016-05-17 21 views
2

我試圖通過SOAP消息(我已經提取)發送到我的WCF服務而不使用WCF客戶端基礎結構。 沒有使用我的生產消息(和代碼),我已經能夠設置相同問題的虛擬版本(感謝WF_WCF_Samples)。在手動發送肥皂消息時,我收到WCF的AddressingNone錯誤

所以合同是這樣的:

[ServiceContract(Namespace="http://Microsoft.Samples.UsingUsing")] 
public interface ICalculator 
{ 
    [OperationContract] 
    double Add(double n1, double n2); 
    [OperationContract] 
    double Subtract(double n1, double n2); 
    [OperationContract] 
    double Multiply(double n1, double n2); 
    [OperationContract] 
    double Divide(double n1, double n2); 
} 

在實際WCF客戶端發送我得到這個在WCF跟蹤SOAP消息展望:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
    <s:Header> 
     <To s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://localhost:56852/service.svc</To> 
     <Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://Microsoft.Samples.UsingUsing/ICalculator/Divide</Action> 
    </s:Header> 
    <s:Body> 
     <Divide xmlns="http://Microsoft.Samples.UsingUsing"> 
      <n1>0</n1> 
      <n2>0</n2> 
     </Divide> 
    </s:Body> 
</s:Envelope> 

這就是從工作呼叫。 但是,如果我嘗試這樣做,我得到以下異常被在WCF跟蹤記錄:

尋址版本「AddressingNone(http://schemas.microsoft.com/ws/2005/05/addressing/none)」不支持添加WS-Addressing頭。

我已經試過像了SoapUI甚至Httpie發送XML文件:

Httpie sending Soap message - failure

所以我得到一個HTTP錯誤400 - 錯誤的請求。

我目前使用basicHttp綁定WCF綁定。

我試着搞亂了綁定,但沒有任何工作。有什麼想法嗎?

回答

3

我被驚呆了WCF實際上添加下列頭中的SOAP消息時,我看着WCF跟蹤(在服務端,而不是客戶端):

<To s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://localhost:56852/service.svc</To> 
<Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://Microsoft.Samples.UsingUsing/ICalculator/Divide</Action> 

當我拿出來,我的請求沒有問題。

Httpie sending Soap message - success

在設置Wireshark的一樣東西,我設法看到實際的消息並沒有包含這個頭。在跟蹤過程中,WCF在SOAP頭中添加了它。但發送通過是無效的。 HTTP Soap Action標頭就足夠了。