2016-05-17 4 views
2

Ich versuche über eine SOAP-Nachricht (die ich extrahiert habe) zu meinem WCF-Dienst zu senden, ohne die WCF-Client-Infrastruktur zu verwenden. Ohne meine Produktion Nachrichten (und Code) zu verwenden, konnte ich eine Dummy-Version des gleichen Problems einrichten (dank der WF_WCF_Samples).Beim Senden einer Soap-Nachricht "manuell" bekomme ich AddressingNone Fehler mit WCF

So sieht der Vertrag wie folgt aus:

[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); 
} 

auf SOAP-Nachricht suchen, das die tatsächliche WCF-Client sendet ich diese erhalten im WCF Tracing:

<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> 

Und das ist aus dem Arbeits Anruf. Allerdings, wenn ich versuche, es zu tun, erhalte ich die folgende Ausnahme, die in der WCF Tracing protokolliert wird: Version

Adressierung 'AddressingNone (http://schemas.microsoft.com/ws/2005/05/addressing/none)' nicht unterstützt WS-Addressing-Header hinzufügen.

Ich habe so etwas wie SoapUI versucht und Httpie auch eine XML-Datei zu senden:

Httpie sending Soap message - failure

So bekomme ich wieder einen HTTP-Fehler 400 - Bad Anfrage.

Ich verwende derzeit die basicHttp (s) Bindung WCF-Bindung.

Ich habe versucht, mit den Bindungen zu verwirren, aber nichts funktioniert. Irgendwelche Gedanken?

Antwort

3

Ich war fassungslos, dass WCF tatsächlich die folgenden Header in der SOAP-Nachricht hinzugefügt, wenn ich an der WCF sah (auf der Serviceseite, nicht die Client-Seite) Tracing:

<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> 

Als ich es herausnahm, Meine Anfrage ging ohne Probleme durch.

Httpie sending Soap message - success

In etwas wie Wireshark Einrichtung habe ich es geschafft, dass die eigentliche Nachricht diesen Header enthalten nicht zu sehen. Irgendwo hat WCF dies während der Ablaufverfolgung im SOAP-Header hinzugefügt. Aber das Senden war ungültig. Der HTTP Soap Action-Header ist ausreichend.

Verwandte Themen