我有一个设置为在 IIS 7 下运行的 wcf 服务。我将服务设置为传输模式的流式传输。当我在控制台应用程序中自行托管服务时,一切似乎都正常。但是当客户端连接到 iis 托管服务时,它似乎正在缓冲,客户端最终超时。我已经使用 fiddler 来确定这个客户端超时发生在甚至发出 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
} );
顺便说一句,连接超时,因为流是无限的,服务器应该读取前几个字节,然后关闭流。