4

IIS 7 で実行するように設定している wcf サービスがあります。サービスを転送モードのストリーミングに設定しています。コンソール アプリケーションでサービスを自己ホストすると、すべてが正常に機能するように見えます。しかし、クライアントが iis ホステッド サービスに接続すると、バッファリングしているように見え、クライアントは最終的にタイムアウトします。フィドラーを使用して、http 要求が行われる前にこのクライアントのタイムアウトが発生することを確認しました。

これがサーバーバインディングです。

var binding = new CustomBinding();
            binding.Elements.Add( new TextMessageEncodingBindingElement()
            {
                MessageVersion = MessageVersion.Soap12WSAddressing10
            } );

            var secBinding = SecurityBindingElement.CreateUserNameOverTransportBindingElement();
            secBinding.AllowInsecureTransport = true;
            binding.Elements.Add( secBinding );
            binding.Elements.Add( new HttpTransportBindingElement()
            {
                TransferMode = TransferMode.Streamed,
                MaxReceivedMessageSize = Int32.MaxValue,

            } );

そしてクライアントバインディング:

var binding = new CustomBinding();
            binding.Elements.Add( new TextMessageEncodingBindingElement()
            {
                MessageVersion = MessageVersion.Soap12WSAddressing10
            } );

            var secBinding = SecurityBindingElement.CreateUserNameOverTransportBindingElement();
            secBinding.AllowInsecureTransport = true;
            binding.Elements.Add( secBinding );
            binding.Elements.Add( new HttpTransportBindingElement()
            {
                TransferMode = TransferMode.Streamed,
                MaxReceivedMessageSize = Int32.MaxValue,
                MaxBufferSize = 400
            } );

余談ですが、ストリームは無限であり、サーバーは最初の数バイトを読み取ってからストリームを閉じる必要があるため、接続がタイムアウトします。

4

2 に答える 2

2

最近、同じ問題が発生しました。IIS でサービスをホストする場合、ストリーミングを有効にするかどうかに関係なく、サービスは送信前にメッセージ全体をバッファリングします。この理由は、サービスでストリーミングが有効になっている場合、WCF が Response.BufferOutput を "false" (デフォルトは true) に設定していないように見えるためです。回避策は次の場所にあります。

http://weblogs.asp.net/jclarknet/archive/2008/02/14/wcf-streaming-issue-under-iis.aspx

于 2011-02-16T21:33:56.370 に答える
0

クライアントでストリームを閉じていますか? true の場合は、サービス側だけを閉じてみてください。また、OneWay 操作かどうかを確認します。エンドポイントの両方のバインディング ノードを投稿できますか?

于 2010-04-08T18:40:30.913 に答える