2012-01-04 8 views
2

私はWCF用のすべてのベースクライアントコードを生成するために用意されたwsdlを使用しました。サービスと通信しようとすると、エラーが発生します。このエラーは、バインディングのコンテンツタイプが応答メッセージのコンテンツタイプと一致しないことを示します。WCFクライアントからのヘッダーを傍受する方法...?

Fiddlerを起動した後、私は生データが出て戻ってくるのを見ました。私が話そうとしているMagentoサーバーは、2つのContent-Type値を返しています。繰り返しますが、Fiddlerを使用して、私は1つのContent-Typeでクライアントに応答しましたが、うまくいきました。

これでMagentoサーバーを適切に応答させることができます。これは、この問題に対する「正しい」解決策であるためです。しかし、それは私のコントロール外です(それを修正したくない別の会社)。だから、私はWCFがそれらを取得し、それが重複を無視するとき、ヘッダーを傍受する必要があります。しばらくの間、インターウェブを検索した後、私はまだこれを行う "最良の"方法を理解しようとしています。それを行うための "あらゆる"方法です。

私は、上書きするのに適切なものを指摘でき、余分なContent-Typeを削除するために何をする必要がありますか?

答えて

4

AfterReceiveReplyメソッドでMagento Serverから受け取ったレスポンスの余分なContent-Typeを操作して削除するには、IClientMessageInspectorを実装する必要があります。

EDIT:

だからあなたは、Content-Type appears to be a restricted headerしかし

void IClientMessageInspector.AfterReceiveReply(ref Message reply, Object correlationState) 
{ 
    var prop = 
     reply.Properties[HttpResponseMessageProperty.Name] as HttpResponseMessageProperty; 

    if (prop != null) 
    { 
     // get the content type headers 
     var contentType = prop.Headers["Content-Type"]; 
    } 
} 

で提供されていますHttpResponseMessageProperty経由で受信したレスポンスにHTTPヘッダにアクセスすることができます。おそらく少し反映が問題を解決するかもしれないが、うまくいけば、これはあなたにいくつかのアイデアを与える。

関連する問題