2016-05-28 1 views
0

WCFサンプルプロジェクト(WF_WCF_Samples \ WCF \ Extensibility \ MessageEncoder \ Compression)に似たカスタムメッセージエンコーダを作成しています。カスタムMessageEncoderを使用しているときにSOAPヘッダーが見つからない

私が抱えている問題は、エンコード後にこの要求を生成する圧縮なしのデフォルトのtextMessageEncoderを使用してリクエストを送信する場合です。私はgzip圧縮と私のカスタムエンコーダを使用してあるsoapUIからのリクエストを送信していたときに

enter image description here

しかし、これは私が得るものです。あなたはが不足しているへとアクションを見ることができるように

enter image description here

。私にはこの例外が与えられます。

The SOAP action specified on the message, '', does not match the HTTP SOAP Action, 

これが私の質問は、なぜこれが起こっているされてMessageEncoderに手動で次

message.Headers.To = new Uri("http://localhost:19860/Service1.svc"); 
message.Headers.Action = @"http://tempuri.org/IService1/GetData"; 

を追加することで解決することができますか?カスタムMessageEncoderを使用するときに、メッセージを作成するために内部エンコーダーを使用しているにもかかわらず、ヘッダーが欠けているのはなぜですか?

これは完全な解決策です。それはあなただけの石鹸UIを必要とhttp://localhost:19860/Service1.svc

https://github.com/janmchan/WCFCompression

答えて

0

に要求を送信テストするには、最終的に問題を発見しました。これはWCFのバグのようです。 SoapHeaderのActionとToは実際にはSoap 1.2では必要ないはずですが、何らかの理由でそのバージョンを使用していても、内側のエンコーダのReadMessageを呼び出すだけでカスタムMessageEncoderを使用する場合にのみWCFでこの問題が発生します。解決策もかなり混乱しています。エラーメッセージが示唆しているように、アクションはSOAPアクションと一致しないので、空白であってもSOAPActionヘッダーを追加するだけです。

ここに私が解決策を見つけるのに役立つ記事があります。

WCF - SOAP Action mismatch error while testing with SoapUI

関連する問題