2016-05-24 1 views
1

私はWCFで双方向gzip圧縮に取り組んでいます。応答部分はIISでかなり簡単ですが、私はSoapUIを使ってリクエストを処理できないようです。 SoapUIを使用している理由は、接続するクライアントアプリケーションがMicrosoftスタックを最後に使用しないためです。WCFのSoapUIからgzipを処理するには?

私はWCFServiceDemo(WCFサーバ)とWCFClient(WCFクライアントを)持っているソリューションではpromlem https://github.com/janmchan/WCFCompression

を示すために、ここで試料溶液を作成しました。下のバインディングをクライアント/サーバーの両方で使用すると、私は要求/応答に問題はありません。

<bindings> 
    <customBinding> 
    <binding name="myBinding"> 
     <binaryMessageEncoding compressionFormat="GZip"/> 
     <httpTransport decompressionEnabled="True" /> 
    </binding> 
    </customBinding> 
</bindings> 

私はこの要求

2016-05-23 11:37;14 : Connection: Keep-Alive 
Content-Length: 298 
Content-Type: application/soap+msbin1+gzip 
Accept-Encoding: gzip, deflate 
Expect: 100-continue 
Host: localhost:19860 

しかしながら、これらの設定でSOAPUIを用い

enter image description here

このサンプルメッセージ

enter image description here

と以下のヘッダを得ます

コンテンツタイプが間違っていることを示唆する次の応答があります。私はヘッダーを追加しようとしましたが、解決策ではありません。また、Gzip圧縮用のフィルタを追加するモジュールを追加しようとしましたが、すべてのモジュールを終了した後でもエラーが発生します。

SoapUIの接続方法と同様に、エンドクライアントがWCFに接続できることを確認する方法を教えてください。

HTTP/1.1 415 Cannot process the message because the content type 'application/soap+xml;charset=UTF-8;action="http://tempuri.org/IService1/GetData"' was not the expected type 'application/soap+msbin1+gzip' Cache-Control: private 
Server: Microsoft-IIS/10.0 
X-AspNet-Version: 4.0.30319 
X-SourceFiles: =?UTF-8?B?YzpcdXNlcnNcamNoYW5cZG9jdW1lbnRzXHZpc3VhbCBzdHVkaW8gMjAxNVxQcm9qZWN0c1xXY2ZTZXJ2aWNlRGVtb1xXY2ZTZXJ2aWNlRGVtb1xTZXJ2aWNlMS5zdmM=?= 
X-Powered-By: ASP.NET 
Date: Tue, 24 May 2016 00:04:19 GMT 
Connection: close 
Content-Length: 0 

答えて

0

いくつかのオプションを確認した後、これを解決する最善の方法はカスタムMessageEncoderを使用することです。私は作業サンプルhereを持っていますが、いくつかのヘッダーが欠けている問題がありますが、これが解決されたときには、この問題の解決策になるはずです。

Why are the soap headers missing when using Custom MessageEncoder

関連する問題