2016-05-17 16 views
2

WCFクライアントインフラストラクチャを使用せずに(抽出した)SOAPメッセージをWCFサービスに送信しようとしています。 私のプロダクションメッセージ(およびコード)を使わずに、同じ問題のダミーバージョンをセットアップできました(WF_WCF_Samplesのおかげで)。SOAPメッセージを「手動で」送信すると、WCFでAddressingNoneエラーが発生する

ので、契約は次のようになります。実際のWCFクライアントは、私がWCFトレースでこれを取得送信するSOAPメッセージを見てみると

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

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

そして、それが作業からですコール。バージョン「AddressingNone(http://schemas.microsoft.com/ws/2005/05/addressing/none)」は、WS-Addressingのヘッダを追加することはできません対処

:私はそれを行うにしようとした場合 はしかし、私は、WCFトレースに記録されます、次の例外を取得します。

私は、XMLファイルを送信するためにSOAPUIとさえHttpieような何かを試してみた:

Httpie sending Soap message - failure

だから私は戻ってHTTPエラー400取得 - 不正な要求を。

私は現在basicHttp(s)バインディングWCFバインディングを使用しています。

私はバインディングを使いこなそうとしましたが、何も動作していません。何かご意見は?

答えて

3

私は(サービス側ではなく、クライアント側で)私はトレースWCFを見たときにWCFは、実際にSOAPメッセージに次のヘッダーを追加したことを唖然とした。私はそれを取り出したとき

<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アクションヘッダーで十分です。

関連する問題