2016-05-17 83 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标头就足够了。